我是 obj-c 的新手,所以我无法理解其中的一些逻辑。我想了解我的代码和应用程序逻辑。我的应用程序是用 UIImageView 的动画修改简单示例:这是 .h(在基于标准视图的模板中)
#import <UIKit/UIKit.h>
@interface ImageAnimatorViewController : UIViewController {
UIImageView *animImage;
}
@property (nonatomic, retain) IBOutlet UIImageView *animImage;
- (IBAction)startAnimation;
- (NSArray*)creatAnimation:(NSString*)fileName;
@end
这是 .m(没有标准的 dealloc 和 viewDidUnload)
@synthesize animImage;
- (IBAction)startAnimation{
[animImage startAnimating];
}
- (void)viewDidLoad{
[super viewDidLoad];
animImage.animationImages = [self creatAnimation:@"Images.jpg"];
animImage.animationDuration = 1.0f;
animImage.animationRepeatCount = 0;
}
- (NSArray*)creatAnimation:(NSString*)fileName{
UIImage *image = [UIImage imageNamed:fileName];
NSMutableArray *animationImages = [NSMutableArray array];
for (int i = 0; i<8; i++) {
CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage,
CGRectMake(i*600.0f, 0.0f, 600.0f, 262.0f));
UIImage *animationImage = [UIImage imageWithCGImage:imageRef];
[animationImages addObject:animationImage];
[animationImage release];
}
return animationImages;
}
我也有带有 imageview 和按钮的 xib,但是当我按下 b 时,控制台中会出现崩溃和 EXC_BAD_ACCESS。在 IBAction 中,我了解 imageView 没有动画图像,但为什么呢?并且有奇怪的引用计数 = 3,因为在 viewDidLoad 中有 2(为什么是 2?)。我在 viewDidLoad 中添加了 self 和 self-> 前缀,但没有结果。animationImages 是(复制)属性,因此在 autorelease 池用 animationImages 耗尽后图像保存。我对 app.10x 的这种行为感到非常惊讶!