UIView子类的Dealloc阻止运行类方法

时间:2013-07-01 11:18:55

标签: ios uiview xcode4.2 dealloc

我创建了一个UIView子类,里面有一个UIButton,里面有目标。 选择器在UIView子类中实现,并由Interface Builder链接。

但是当我在父视图中运行addSubview时,控制器点击按钮会导致

  

performSelector:withObject:withObject:]:发送给deallocated的消息   实例

(我使用ARC) 我在dealloc方法中添加了一些控制台输出,我看到在viewDidLoad以UIView子类的addSubview结束后,子类被解除分配。

如何预防这种情况? 我尝试了@property(非原子,保留),将实例添加到某个全局数组中...... 但没有运气。

据我所知,由于没有强大的参考资料,ARC会对该物品进行处理,但我不能强行阻止这种情况。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

在View Controller类中创建子视图类的强引用可能有助于您解决问题。

@property (strong , nonatomic) UIView *subclassName;

答案 1 :(得分:0)

您是否存储了要添加为子视图的按钮(UIButton)的引用?

答案 2 :(得分:0)

问题在于将NIB链接到Class。

我将File owner链接到了class而不是链接UIView对象。

通常当使用UIViewController处理nib时,需要将File Owner链接到UIViewController类。 但是在处理UIView子类时,必须链接UIView对象。