【发布时间】:2012-08-23 08:11:21
【问题描述】:
我正在创建 UIView 的自定义子类。我目前正在基于Objective C - Custom view and implementing init method? 进行初始化,因此无论是从代码加载还是从 xib 加载,都会完成一些初始化。
我现在遇到的问题是我正在添加一个“必需”属性(为了讨论,我们将其称为 reqProp) - 如果没有设置此属性,视图将无法呈现,并且必须在任何其他属性之前设置它可以使用特定于我的视图子类的功能。
因此,我认为强制执行此要求的自然位置是提供一个新的 init 函数,因此我不必担心在我的其余代码中没有设置它 - 例如
initWithFrame:(CGRect)frame forReqProp:(NSString *)reqProp;
但是,我不确定在通过 initWithCoder 进行初始化时如何强制执行相同的要求。
我能想到的最接近的是要求在用户定义的运行时属性中指定此属性(就在需要在接口构建器中定义自定义类名称的位置),但在这种情况下,不清楚何时/如果我由于未指定属性,应该“炸毁”。
我能想到的唯一其他选择就是有非常明确的文档,说明这个必需的属性必须是在使用视图之前设置的第一件事。
【问题讨论】:
-
只想到合理的默认设置。
-
我不能为这个特定的属性默认任何东西 - 它必须由开发人员使用这个视图指定。换句话说,我选择的任何默认值都是错误的,使用视图的开发人员需要在使用视图之前对其进行更改。
标签: objective-c xcode uiview