在我的项目中,我使用了storyboard,当我访问UI元素时,我创建了一个属性并将其链接起来。这个属性很弱。据我所知,该属性可能很弱,因为它已经添加到视图中并且视图保留了它。
在另一个项目中,我不使用故事板。现在我不确定如何定义UI元素。我认为这可以做到,情况1:
@interface LoginView
@property (strong, nonatomic) UIButton *login
@end
- (instancetype) init {
if (self == [super init]) {
_login = [UIButton buttonWithType:UIButtonTypeCustom];
[self addSubview:_login];
[self setNeedsUpdateConstraints];
}
return self;
}
情况2:
@interface LoginView
@property (weak, nonatomic) UIButton *login //<<notice weak
@end
- (instancetype) init {
if (self == [super init]) {
UIButton login = [UIButton buttonWithType:UIButtonTypeCustom];
[self addSubview:login];
_login = login
[self setNeedsUpdateConstraints];
}
return self;
}
我的问题是:&#34;两种情况都可以使用?如果是这样,有一种首选方式吗?&#34;
自己的想法:我认为情况二是首选,因为它没有创建第二个强指针?
答案 0 :(得分:1)
您仍然可以使用弱引用,因为视图超级视图将具有强引用。
答案 1 :(得分:1)
要么工作正常。
就我个人而言,我更喜欢坚强,所以我不依赖另一种保留某种观点。
与弱引用相比,强大的开销略微减少,需要跟踪并自动归零为零(不是你会注意到这个时间差)。