編集:以下に定義されている問題は、実際にこのコードで発生しました:
int main(int argc, const char * argv[])
{
@autoreleasepool
{
XYZPerson *myPerson = [XYZPerson person];
myPerson = nil;
NSLog(@"The end.");
}
}
メソッド 'person' はファクトリ メソッドです。
次のコードがあります。
int main(int argc, const char * argv[])
{
@autoreleasepool
{
XYZPerson *myPerson = [[XYZPerson alloc] init];
myPerson = nil;
NSLog(@"The end.");
}
}
XYZPerson は dealloc メソッドをオーバーライドして、NSLog で何かを出力します。上記のコードは次のような出力を期待しています。
Dealloc!
The end.
しかし、それは私が期待したとおりではありません:
The end.
Dealloc!
私は何か間違ったことをしていますか、それとも ARC の概念を誤解していますか?