IBInspectable属性在initWithCoder:initializer中没有值

时间:2016-12-11 16:03:23

标签: objective-c xcode uikit ibdesignable ibinspectable

我在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

1 个答案:

答案 0 :(得分:7)

您似乎回答了自己的问题:awakeFromNib而不是initWithCoder:awakeFromNib稍后,到那时,已经设置了运行时属性。

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