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