私が作成したクラスのinit
メソッドのリークに問題があります。それをシンプルに保つために、私は次の(簡体字)問題を抱えている:objective-cクラスのinitメソッドのメモリリーク
- のViewControllerは、文字列に初期化
- AnimationDataクラスのインスタンスを初期化
- ClipDataクラスのインスタンスを初期化
ViewController:
myClipData = [[ClipData alloc] init];
ClipData:
- (id)init
{
self = [super init];
if (self) {
animData = [[AnimationData alloc] init]; //LEAK HERE
}
return self;
}
AnimationData:
- (id)init
{
self = [super init];
if (self) {
name = [NSString string];
}
return self;
}
クラス内のすべてのオブジェクトは、(nonatomic, retain)
として宣言されています。私はこれを行うことが保持カウントを押し上げることを知っていますが、AnimationData
をどのように初期化するのですか?animData
???
おそらく非常にばかげた質問ですので、どんな助けでも大歓迎です。
おかげで、あなたはanimDataを解放されることはありません
Duncs
実際には、ココアのアン実装の詳細のおかげで、彼は '[NSStringの文字列]'メソッドを持つ幸運です。 – JeremyP
@JeremyP:そうであれば、それに頼るべき行動ではありません。 –
いいえ、私はあなたがそれに頼るべきであることを暗示するつもりはありませんでした。私はCocoaの現在の実装を使用して、TheDuncsが実際にガベージ文字列を実際に表示しない理由を説明するポイントを追加しました。 – JeremyP