ARC以前の保持と解放の考え方から来ているので、objectiveCでARCに頭を悩ませようとしています。
ARC より前の時代には、新しく作成されたインスタンスを返すメソッドはすべて自動解放プールを使用していました。
- (NSString *)description {
NSString *output = [NSString stringWithFormat:@"max size is: %d", maxSize];
return output;
}
それを保持するのは、この新しく作成されたインスタンスのジョブの受信者でした。
私は興味がある。ARCの世界で、あなたはこれを行うことができますか?
- (NSString *)description {
NSString *description = [[NSString alloc] initWithFormat:@"max size is: %d", maxSize];
return description;
}
これは技術的に可能ですか?それは論理的ですか?つまり、気分が悪いです。リテインカウントの邪魔ですよね?
私の質問は、さまざまなゲッターにも当てはまります。例えば:
- (NSArray *)items {
return [NSArray arrayWithArray:items];
}
することができます
- (NSArray *)items {
return [[NSArray alloc] initWithArray:items];
}
ARC が保持メッセージと解放メッセージを追加することを理解しました。これらの場合にこれがどのように機能するかを理解したいと思います。