我认为在我的视图中有两种方法可以添加UIControl
状态1:
@property (nonatomic,weak) UIButton *button;
- (void)viewDidload
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button........ (set frame,color,text........)
[self.view addSubView:button];
_button = button;
}
状态2。
@property (nonatomic,strong) UIButton *button;
- (void)viewDidload
{
_button = [UIButton buttonWithType:UIButtonTypeCustom];
_button.......(set frame,color,text......)
[self.view addSubView:_button];
}
我想知道它们之间的差异以及在不同情况下我应该选择什么?
答案 0 :(得分:1)
在版本1(非原子,强)中,viewcontroller保留对该按钮的强引用。这意味着如果您将其从代码中的某个位置([self.button removeFromSuperview];
)中的superview中删除,它仍然在内存中,并且可以在以后的某个时间点([self.view addSubview:self.button];
)进行读取。
在版本2(非原子,弱)中,viewcontroller保留对该按钮的弱引用。这意味着,如果您将代码中的某个位置的超级视图中删除它(并且您的应用程序的其他任何部分都没有对其进行强引用),则会将其取消分配。
创建局部变量UIButton *button = ...
并将其分配给实例变量_button = button;
或直接使用实例变量_button = [UIButton buttonWithType:...
之间没有真正的区别。
答案 1 :(得分:0)
:
您已将UIButton标记为弱属性 弱引用意味着指针没有所有者,因此一旦不再需要它就会被释放(也就是说,没有任何东西指向它)。
但状态2:
您已将UIButton标记为强属性,当您的Button未标记为IBOutlet时,您应该使用强大的