0

プロジェクトをビルドしようとすると、次のエラーメッセージが表示されます

ABC関数は、dealocのエクスプロイトメッセージ送信を禁止します

- (void)dealloc {
    [super dealloc];
}

これはクラスdefです:

#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>


@interface cPlay : UIViewController{
    MPMoviePlayerController *mp;

}
- (void) moviePlayBackDidFinish:(NSNotification*)notification;
-(void) NewVideo : (NSString *) strName;
@end
4

2 に答える 2

0

ARCを使用する場合、コンパイラが必要なすべてのコードを挿入するため、通常、メモリ管理用のdeallocメソッドを作成する必要はありません。本当に[super dealloc]内部を呼び出す必要がない場合は、

于 2012-05-22T19:16:22.860 に答える
0

dealloc 関数を削除するだけで、ARC (自動参照カウント) は自分で dealloc を許可しません。ARC がそれを行います。

このリンクを参照してください:

http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1

私が ARC で気に入っている点の 1 つは、ほとんどの場合、dealloc メソッドを記述する必要が > 完全になくなることです。オブジェクトの割り当てが解除されると、そのインスタンス変数と
合成されたプロパティが自動的に解放されます。次のように書く必要はもうありません。

- (void)dealloc
{
    [_window release];
    [_viewController release];
   [super dealloc];
}

これは、Objective-C が自動的に処理するためです。実際、上記を書くことさえ > できません。ARC では release や [super
dealloc] を呼び出すことはできません。引き続き dealloc を実装できます (後でその例を示します) が、手動で ivar を解放する必要はなくなりました。

于 2012-05-22T19:19:03.713 に答える