質問

私はUIImageViewのアニメーションでいくつかの問題を抱えています。私は、画像を含む3つのNSArrayのオブジェクトを作成し、UIImageViewを取る3つのメソッドを作成し、そこに新しいアニメーションを割り当てました。これは、シミュレータやデバイスをクラッシュする3つの方法のいずれか最初にコールしたが、それを別の時間をやって素晴らしい作品。任意のアイデア?

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {

// set the anims
slowAnimation = [NSArray arrayWithObjects:
                    [UIImage imageNamed:@"image1.jpg"],
                    [UIImage imageNamed:@"image2.jpg"],
                                nil];
defaultAnimation = [NSArray arrayWithObjects:
                    [UIImage imageNamed:@"image3.jpg"],
                    [UIImage imageNamed:@"image4.jpg"],
                        nil];
fastAnimation = [NSArray arrayWithObjects:
                    [UIImage imageNamed:@"image5.jpg"],
                    [UIImage imageNamed:@"image6.jpg"],
                    nil];

// load the default speed - this works once, but when applied a second time it crashes the simulator and device
[self setDefaultAnim:myUIImageViewObject];

[super viewDidLoad];
}


// animation switcher
-(void)setSlowAnim:(UIImageView *)imageView
{
    [imageView stopAnimating];
    imageView.animationImages = slowAnimation;
    imageView.animationDuration = 0.4;
    [imageView startAnimating];
}
-(void)setDefaultAnim:(UIImageView *)imageView
{
    [imageView stopAnimating];
    imageView.animationImages = defaultAnimation;
    imageView.animationDuration = 0.4;
        [imageView startAnimating];
}
-(void)setFastAnim:(UIImageView *)imageView
{
    [imageView stopAnimating];
    imageView.animationImages = fastAnimation;
    imageView.animationDuration = 0.4;
   [imageView startAnimating];
}

ログのエラーます:

[Session started at 2009-04-06 22:46:54 +0100.]
Loading program into debugger…
GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".warning: Unable to read symbols for "/System/Library/Frameworks/UIKit.framework/UIKit" (file not found).
warning: Unable to read symbols from "UIKit" (not yet mapped into memory).
warning: Unable to read symbols for "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics" (file not found).
warning: Unable to read symbols from "CoreGraphics" (not yet mapped into memory).
Program loaded.
sharedlibrary apply-load-rules all
Attaching to program: `/Users/hello/Library/Application Support/iPhone Simulator/User/Applications/6DB7C45D-1A26-4775-9AE3-C30F3EBC9F83/PlateSpinner.app/PlateSpinner', process 345.
kill
quit

The Debugger has exited with status 0.
役に立ちましたか?

解決

私はあなたがretainで作成する3つのアレイをviewDidLoadする必要があると思う - あなたはallocを呼び出すまで、あなたが所有権を持っていないので、あなたは、彼らにretainを呼び出すことはありません。

他のヒント

の代わりにちょうど使用にinitWithObjectsメッセージを保持して呼び出すます:

slowAnimation = [[NSArray alloc] initWithObjects:
                                  [UIImage imageNamed:@"image1.jpg"],
                                  [UIImage imageNamed:@"image2.jpg"],
                                  nil];
あなたはラウンジが示唆何場合は、

は、しかし、あなたは後でslowAnimationオブジェクトを解放する必要があることに注意してください。あなたはそれをalloc'dので、誰かがそれ以外の場合は、実行時に指示されるまで、それは1の保持カウントを持っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top