我正在创建 UIView 的自定义子类。我目前正在基于Objective C 进行初始化 - 自定义视图并实现 init 方法?,因此无论是从代码加载还是从 xib 加载,都会完成一些初始化。
我现在遇到的问题是我正在添加一个“必需”属性(为了讨论,我们将其称为 reqProp) - 如果没有设置此属性,视图将无法呈现,并且必须在任何其他特定于的功能之前设置它可以使用我的视图子类。
因此,我认为强制执行此要求的自然位置是提供一个新的 init 函数,因此我不必担心在我的其余代码中没有设置它 - 例如
initWithFrame:(CGRect)frame forReqProp:(NSString *)reqProp;
但是,我不确定在通过 initWithCoder 进行初始化时如何强制执行相同的要求。
我能想到的最接近的是要求在用户定义的运行时属性中指定此属性(就在需要在界面生成器中定义自定义类名称的位置),但在这种情况下,不清楚何时/是否应该“吹up”,因为没有指定属性。
我能想到的唯一其他选择就是有非常明确的文档,说明这个必需的属性必须是在使用视图之前设置的第一件事。