我正在尝试将UIImage
类子类化,并添加一个带有一些添加变量的自定义init
方法。但是,当我尝试使用新的初始化程序创建一个新对象时,该对象始终为nil
。新的init
方法如下:
- (id)initWithLat:(int)latitude andLong:(int)longitude andSize:(int)size {
self = [super initWithContentsOfFile:@"dot.png"];
if (self) {
self.lat = latitude;
self.longi = longitude;
self.dotScale = size;
}
return self;
}
我相信我是正确的子类,这是我的头文件:
#import <UIKit/UIKit.h>
@interface Dot : UIImage {
int lat;
int longi;
int dotScale;
}
@property int lat;
@property int longi;
@property int dotScale;
- (id)initWithLat:(int)latitude andLong:(int)longitude andSize:(int)size;
@end
我在尝试将Dot
对象添加到NSMutableArray
时收到错误。
dots = [[NSMutableArray alloc] init];
[dots addObject:[[Dot alloc] initWithLat:0 andLong:0 andSize:1]];
我的猜测是新的初始化程序有问题。我使用this作为指南。
答案 0 :(得分:1)
initWithContentsOfFile:
将返回nil。可以找到吗?使用记录/断点来查明在初始化过程中发生的事情。
答案 1 :(得分:1)
这是initWithContentsOfFile
的文档:
initWithContentsOfFile: Initializes and returns the image object with the contents of the specified file. - (id)initWithContentsOfFile:(NSString *)path Parameters path The path to the file. This path should include the filename extension that identifies the type of the image data. Return Value An initialized UIImage object, or nil if the method could not find the file or initialize the image from its contents.
请注意,如果找不到指定的文件,则调用将返回nil。它可能是一个安全的赌注,你的'dot.png'文件没有找到,特别是因为你没有指定它的完整路径。我无法想象你为什么要硬编码这个值,你可能应该为文件名添加一个参数给初始化器。