5

我在 MyClass.h 文件中有这个:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface MyClass : UIView

@end

这是 .m 文件中的代码:

-(void)awakeFromNib{
    [super awakeFromNib];

    NSLog(@"This works %lud",(unsigned long)self.max);
}

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

    if ((self = [super initWithCoder:aDecoder])){

        NSLog(@"This doesn't work %lud",(unsigned long)self.max);
    }

    return self;
}

在 awakeFromNib 方法中,我在 IB 中设置了正确的值。在 initWithCoder: 我得到这个值等于零。

检查 IB 中设置的该属性的值的合适时间是什么时候?

这就是我在 .m 文件中定义属性的方式:

@interface MyClass()

@property (nonatomic) IBInspectable NSUInteger max;

@end
4

1 回答 1

7

您似乎已经回答了自己的问题:awakeFromNib而不是initWithCoder:. awakeFromNib更晚了,到那个时候,运行时属性已经设置好了。

当然,在现实生活中,您可能不会关心这个值,直到我们到达viewDidLoad,这比两者都要晚得多。

于 2016-12-11T16:40:25.837 回答