0

我创建了一个充当其他几个类的代表的类。不过有问题。ARC 过早地释放了这个类,当一个委托消息发送给它时,程序崩溃了。我不明白为什么...我将课程设置为强。如何保证这个类不被释放?

视图控制器.h

Class *__strong class;

视图控制器.m

class = [[Class alloc] init...];

类.m

-(id)init {

    self = [super init];

    Object *object = [[Object alloc] init...];
    object.delegate = self;

    return self;

}

日志

-[Object respondsToSelector:]: message sent to deallocated instance 0x11453f40
4

2 回答 2

1

局部变量在函数退出时被释放,无论您决定附加多少内存限定符。

于 2012-12-30T05:23:10.657 回答
1

你有你的答案,但我想我会用我自己的一点小费来插话。我总是从 dealloc 的通知中心删除我的课程。

-(void) dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

这对某些人来说可能有点矫枉过正,但我​​非常依赖通知模式来实现尽可能少的耦合。由于通知的异步特性与 ARC 相结合,这几乎是必需的。

于 2012-12-30T08:12:59.317 回答