Свойство IBInspectable не имеет своего значения в initWithCoder: initializer


У меня это в Миклассе.файл 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 2

1 ответ:

Похоже, вы сами ответили на свой вопрос: awakeFromNib вместо initWithCoder:. awakeFromNib будет позже, и к этому времени атрибуты среды выполнения будут установлены.

В реальной жизни, конечно, вас, вероятно, не будет волновать это значение, пока мы не доберемся до viewDidLoad, что значительно позже, чем и то, и другое.