使っています UIActionSheet
私のプロジェクトでは:
self.actionSheet = [[[UIActionSheet alloc] initWithTitle:nil] autorelease];
これはオブジェクトです:
@property (nonatomic, retain) UIActionSheet *actionSheet;
そして後 UIActionSheet
解雇されて作りたい nil
このコードで:
[self.actionSheet release];
self.actionSheet = nil;
しかし、それを行うとアプリがクラッシュしますが、なぜそれが起こるのでしょうか?
回答:
回答№1は2手動で呼び出す release
問題です。プロパティの合成されたセッターを使用すると、以前のオブジェクトが適切に解放されます。
コードを次のように変更する必要があります。
self.actionSheet = nil;
または、手動で解放したい場合は、基になるインスタンス変数を nil
、 そのようです:
[self.actionSheet release];
_actionSheet = nil;
コメントで提案されているように、コードをARCに移行する必要があります。すべてのコードを移行できない場合でも、ほとんどのコードを移行して、「問題のある」コードのみをMRCに保持できます。