我有返回類型爲(NSArray/NSData/NSString/NSDictionary等)的函數。我可以返回並使用,但是我的問題出現了@釋放對象。請指導我哪一個是爲object.if東西回來是錯的請無視管理內存,並給最好的IOS內存管理@函數調用返回分配的對象
我已經審閱您的最佳解決方案Apple內存管理指南
A)
-(NSData *)somefunction2
{
NSData *data=[[[NSData alloc]init]autorelease];
// fill stuff for nsdata
return data;
}
-(void)somefunction
{
NSData *data=[self somefunction2];
// use data
}
最好的方法但是大部分的博客的建議,以避免自動釋放,所以我使用以下類型
B)
-(NSData *)somefunction2
{
NSData *data=[[NSData alloc]init];
// fill stuff for nsdata
return data;
}
-(void)somefunction
{
NSData *data=[[self somefunction2] retain];
// use data
[data release];
}
C)
-(NSData *)somefunction2
{
NSData *data=[[[NSData alloc]init]autorelease];
// fill stuff for nsdata
return data;
}
-(void)somefunction
{
NSData *data=[[self somefunction2] retain];
// use data
[data release];
}
編輯: 一兩件事。如果我嘗試將相同的分配對象傳遞給某個函數調用參數或自定義委託對象,那麼我必須釋放????無論是在函數調用下還是在函數def中獲得保留然後釋放。
NSData *data=[[NSData alloc]init];
[self somfunctioncall:data];
或
NSData *data=[[NSData alloc]init];
[delegate mydelegatefunction:data];
-(void)somfunctioncall:(NSdata *)data
{
NSData *newdata =[data retain];
//data use
[data release];}
在此先感謝
N.B.前綴「get」僅用於間接返回值或對象的方法。 – albertamg
謝謝albertamg –