在我已經使用autorelease的大部分代碼中,對象最終都是從函數返回的。在此點之後無法調用清除釋放,並且autorelease是要走的路。但是,在對象將傳遞給另一個將保留它的對象的情況下,它正在使用autorelease一樣有效嗎?Autorelease Usage的說明
例如
-(void)foo
{
SomeClass *someObject = [[[SomeClass alloc] init] autorelease];
//Do some things
self.someOtherClass.someProperty = someObject;
}
有沒有給它分配給someProperty後釋放對象的任何實際的區別:
-(void)foo
{
SomeClass *someObject = [[SomeClass alloc] init]];
//Do some things
self.someOtherClass.someProperty = someObject;
[someObject release];
}
有沒有在後面更優選前者任何情況呢?
只是一個問題,如果你做了很多繁重的工作。對於像'NSString'或'NSNumber'這樣的較小的對象,通常可以用'-autorelease'來獲得。這是一個判斷呼籲。 –
@JonathanGrynspan同意,這是一個指導,而不是一個規則。 – gcamp