iOS强大与弱UI以编程方式创建

时间:2014-07-31 10:24:44

标签: ios objective-c

在我的项目中,我使用了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;

自己的想法:我认为情况二是首选,因为它没有创建第二个强指针?

2 个答案:

答案 0 :(得分:1)

您仍然可以使用弱引用,因为视图超级视图将具有强引用。

答案 1 :(得分:1)

要么工作正常。

就我个人而言,我更喜欢坚强,所以我不依赖另一种保留某种观点。

与弱引用相比,强大的开销略微减少,需要跟踪并自动归零为零(不是你会注意到这个时间差)。