0

これはおそらく初心者の質問ですが、それは私を夢中にさせます。メイン ビュー内にサブビューをプログラムで (サンプル コードではなく) ロードするアプリケーションを開発しています。サブビューは IEAudioChannelViewController インスタンスですが、次のようにオブジェクトを解放しようとするとアプリケーションがクラッシュします。

IEAudioChannelViewController *audiochannel = (IEAudioChannelViewController *) [sb instantiateViewControllerWithIdentifier:@"AudioChannel"];
NSLog(@"Audio channel: %@", audiochannel);
[audiochannel release]; <-- here the crash!

リリースラインを削除すると機能しますが、

なぜこれが起こるのですか?(自動参照カウントは無効になっています)

4

2 に答える 2

2

うーん。を呼び出すために発生しますreleasereleaseオブジェクトの所有者である場合にのみ呼び出します。たとえば、alloc、copy、new、retain キーワードが使用されている場合などです。

于 2012-06-06T20:38:49.723 に答える
1

自動解放されたオブジェクトを解放しようとしています。削除してください

[audiochannel release]

instantiateViewControllerWithIdentifier は自動解放されたオブジェクトを返すため、ルールは常に同じです。オブジェクトを割り当て、新規作成、保持、またはコピーしない場合は、オブジェクトに対して release を呼び出さないでください。

于 2012-06-06T20:38:58.590 に答える