0

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

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

performSelector:withObject:withObject:]: 发送到已释放实例的消息

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

如何防止出现这种情况?我尝试了@property(nonatomic,retain),将实例添加到某个全局数组中......但没有运气。

我知道 ARC 会释放该对象,因为没有强参考,但我无法强制阻止这种情况。

任何帮助,将不胜感激。

4

3 回答 3

0

问题在于将 NIB 链接到 Class。

我将文件所有者链接到类而不是链接 UIView 对象。

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

于 2013-07-01T12:16:01.327 回答
0

您是否正在存储您尝试添加为子视图的按钮(UIButton)的引用?

于 2013-07-01T11:30:31.017 回答
0

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

@property (strong , nonatomic) UIView *subclassName;
于 2013-07-01T11:22:35.397 回答