IBInspectable 属性 在 initWithCoder: initializer 中没有它的值
IBInspectable property doesn't have its value in initWithCoder: initializer
我在 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
您似乎已经回答了您自己的问题:awakeFromNib
而不是 initWithCoder:
。 awakeFromNib
是后来的,到时候,运行时属性已经设置好了。
当然,在现实生活中,您可能不会关心这个值,直到我们到达 viewDidLoad
,这比 两者都要晚得多。
我在 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
您似乎已经回答了您自己的问题:awakeFromNib
而不是 initWithCoder:
。 awakeFromNib
是后来的,到时候,运行时属性已经设置好了。
当然,在现实生活中,您可能不会关心这个值,直到我们到达 viewDidLoad
,这比 两者都要晚得多。