0

我正在尝试对该类进行子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]];

我的猜测是新的初始化程序有问题。我以此为指导。

4

2 回答 2

1

initWithContentsOfFile:如果找不到文件,则返回 nil。能找到吗?使用日志记录/断点来找出初始化程序期间发生的事情。

于 2012-11-28T03:50:20.850 回答
1

这是文档initWithContentsOfFile

initWithContentsOfFile:
使用指定文件的内容初始化并返回图像对象。

- (id)initWithContentsOfFile:(NSString *)path

参数
小路
文件的路径。此路径应包含标识图像数据类型的文件扩展名。

返回值
一个已初始化的 UIImage 对象,如果方法找不到文件或从其内容初始化图像,则返回 nil。

请注意,如果找不到指定的文件,则调用将返回 nil。没有找到您的“dot.png”文件可能是一个安全的赌注,特别是因为您没有指定它的完整路径。我无法想象你为什么要硬编码这个值,你可能应该为文件名添加一个参数,到初始化程序。

于 2012-11-28T03:52:03.170 回答