0

xcodeアナライザーは、メソッドが+1の保持カウントを持つObjective-Cオブジェクトを返すことを教えてくれます。 ここに画像の説明を入力してください

しかし、self.athletesは、関数の外部でも必要なオブジェクトです...この警告をどのように解決できますか?再度、感謝します

アスリートは次のように宣言されます。

NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
4

3 に答える 3

2

その行を次の行に置き換えます。

self.athletes = [NSMutableArray array];

私はここに完全な説明を書きました:retain属性を持つプロパティのメモリ管理

于 2011-09-12T19:18:37.127 に答える
1

プロパティは「保持」で定義されているため、ドット表記を使用すると、余分な保持が発生します。[[NSMutableArray alloc] init]からの戻り値の保持カウントは1であり、プロパティ宣言によって生成されたsetter関数を使用してプロパティを設定すると、保持カウントは2になります。

修正するには、次のいずれかを行います。

self.athletes = [NSMutableArray array]; // Returns an autoreleased object

または、これを行うこともできます:

athletes = [[NSMutableArray alloc] init]; // Doesn't use the setter generated by the property declaration, so doesn't retain again.
于 2011-09-12T19:22:08.983 に答える
1

これを処理するための優れた方法があります(そして、UIの作成中にこのパターンをすでに使用しています)。

NSMutableArray *athletesTemp = [[NSMutableArray alloc] init];

self.athletes =athletesTemp;

[athletesTempリリース];

ここでは、自動解放オブジェクトの負荷を運ぶ必要はありません。

于 2011-09-13T01:07:08.337 に答える