2011-01-17 3 views
0

関数のデータベースからNSString値を取得しようとしていますが、アナライザーの警告が表示されます。 HERESに私のコードは...Obj-C、NSStringの戻り値はどのようにして解放しますか?

- (NSString*)getCategoryDesc:(int)pintCid { 
NSString *ret; 
ret = value from my db ... 
return [ret autorelease]; 
} 

それは

return ret; 
return [ret retain]; 
+0

警告はありますか?どのようにあなたの 'ret'の文字列を取得するのですか?それは、autoreleasedまたは他の保持されますか? – Vladimir

答えて

1

が好きではありません(あなたが私たちを示していない)のキーポイントは次のとおりである:「私のDBから値が」何をするのでしょうか?

それが何かやっている場合:

ret = [[NSString alloc] initWithString:@"something"]; 

を、あなたがオブジェクトを解放する責任があるが、それは

ret = [NSString stringWithString:@"something"]; 

のようなものをやっている場合は、確かに、それを解放(とする必要はありません。 、 あなたはいけません)。

メソッドが「get *」であり、「作成*」ではないので、呼び出し元が所有していないオブジェクト(通常は自動解放されたオブジェクトを意味します)を返す必要があります。

object ownership policy rulesでお読みください。

関連する問題