UIImage API参考文档: -
initWithContentsOfFile:
初始化并返回图像对象与指定文件的内容。iOS - 我很困惑这里如何处理内存?
- (id)initWithContentsOfFile:(NSString *)path
参数
路径
到文件的路径。该路径应包含用于标识图像数据类型的文件扩展名。
返回值 的初始化UIImage对象,或零如果该方法无法找到文件或从它的内容初始化图像。
考虑到这种情况,假设我有一个类,它可以是任何类的扩展。例如,刚刚拿UIImage。
@interface myImage : UIImage
{
BOOL isDefaultSet;
}
-(id)initWithDefaultImage;
@end
@implementation myImage
-(id)initWithDefaultImage
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"someInvalidImage" ofType:@"png"];
idDefaultSet = YES;
return [self initWithContentsOfFile:path];
}
@end
//somewhere in other class:
NSString *path = [[NSBundle mainBundle] pathForResource:@"someInvalidImage" ofType:@"png"];
myImage *myObject = [[myImage alloc] initWithDefaultImage];
UIImage *yourObject = [[UIImage alloc] initWithContentsOfFile:path];
现在这里在两种情况下,
“黄金” 给 “retainCount + 1”
如果
initWithDefaultImage/initWithContentsOfFile
返回无因一些问题 - 让我们说(无效的文件路径),作为
myObject的/ yourObject
将被设置为无,即使分配是以前初始化使这个内存会被泄露。
我以这种方式看到了扩展类/接口的许多实现。我很困惑如何处理内存?任何人都可以分享对此的看法?
我建议遵守约定,让你的类以大写字母开头。你会让你的生活更轻松(如果你和其他人一起工作,你将避免被侮辱和殴打;-) – DarkDust
亲爱的DarkDust ..我只是在讨论这个问题。请不要这么苛刻..! – samfisher
我认为DarkDust正在开玩笑,就这些。然而,DarkDust是正确的,因为我已经学会了艰难的方式,即类应该大写,ivars和方法以小写开头。 – johnbakers