【发布时间】:2015-06-01 01:48:40
【问题描述】:
我有一个像这样工作的控件:
MyCustomControl *control = [[MyCustomControl alloc] initWithNavigationController:self.navigationController];
control.completion = ^{
[self controlCompletedAction];
};
[control showFromView:self.view];
但是,由于它没有被任何东西保留,因此在尝试调用某些方法时,控件的访问权限不正确。
在调用类的属性中保留控件可以正常工作,例如:
@property(nonatomic, strong) MyCustomControl *control;
或
@interface MyViewController {
MyCustomControl *control;
}
两者都可以正常工作。
但是,我不想为我正在制作的每个不同控件添加属性。 控件的目的是分离功能以避免大量的视图控制器。该属性不对视图控制器中的任何其他内容负责,因此没有理由保留它。
那么,有没有办法使用属性/ivar 或诉诸 objc 运行时来保留控件不?
【问题讨论】:
-
哪些方法获得了错误的访问权限?你能把代码贴在它崩溃的地方吗?
-
对了,retain应该换成strong(retain是pre-ARC)
标签: objective-c exc-bad-access retaincount ivar