0

当我尝试构建我的项目时,我收到以下错误消息

ABC函数禁止dealoc的exploit消息发送

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

这是类定义:

#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 的一件事是,在大多数情况下,它完全消除了 > 编写 dealloc 方法的需要。当一个对象被释放时,它的实例变量和
综合属性被自动释放。您不再需要编写:

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

因为现在 Objective-C 会自动处理这个问题。事实上,甚至不可能 > 再写上面的内容了。在 ARC 下,你不能调用 release,也不能调用 [super
dealloc]。你仍然可以实现 dealloc——稍后你会看到一个这样的例子——但是不再需要手动释放你的 ivars。

于 2012-05-22T19:19:03.713 回答