Xcodeの自動リファクタリングを使用して古いプロジェクトをARCに変換したばかりです。私が読んだことは「強い」はデフォルトの状態であるということですので、これは理にかなってAuto-ARC変換後:保持されているオブジェクトを安全でないプロパティに割り当てる。オブジェクトは割り当て後に解放されます
@property (nonatomic) NSMutableArray *cards;
:
@property (nonatomic, retain) NSMutableArray *cards;
は置き換えられました。ただし、次の行がタイトルに私にエラーを与えている:
self.cards = [[NSMutableArray alloc] initWithCapacity:54];
エラーが解決されるのstrong
を追加することにより、バックにするために使用保持する該どこに:
@property (nonatomic, strong) NSMutableArray *cards;
をしかし...私は必要がある場合戻ってstrong
をすべての@property宣言に入れてください。それはretain
でした...なぜARCリファクタリングはそれらをすべて削除しましたか?
実際には、デフォルトのメモリ管理セマンティクスは 'strong'ではなく' assign'であり、警告メッセージが表示されます。 – jlehr
jlehrはデフォルトのメモリ管理セマンティックについて正しくありません。彼は間違っていない。 LLVM 3.1&ARCの前にデフォルトが割り当てられています。しかし、今日は強いです。これは残念なことに非常によく文書化されていません。 nschumの答えを見てください。 – stigi
デフォルトが強いので、警告は消えていたはずです。それはなぜですか? –