And*_*rew 5 iphone xcode class objective-c ios
每个视图类都有多个init方法 - 已经作为UIView的一部分包含的方法,然后是其他方法 - 并且每个方法都以相同的方式设置相同的元素.因此,我通常让它们都运行一个[self initialSetup];
方法,其中包括设置所有这些元素.
我遇到的问题是,如果一个子类也有一个initialSetup方法,它将覆盖超类的initialSetup方法,因此超类必须将该方法公开才能仍然起作用.这会导致组织问题,因为除了init之外永远不应该调用该方法,因此没有理由公开.
您遇到了一个没有完美解决方案的问题。理想情况下,您拥有的方法不能在正常意义上进行子类化,只能由该确切类型的类的实例访问。
如果存在风险,通常的做法似乎是将类名合并到设置方法中。所以initialSetup
你会得到类似的东西myViewSubclassInitialSetup
。
您还可以在方法的顶部添加类似的内容:
NSAssert([self isMemberOfClass:[ThisClass class]],
@"IniitalSetup called by sub- or superclass")
Run Code Online (Sandbox Code Playgroud)
然后,如果子类或超类最终调用您的 init 方法,您的调试版本将引发异常。这将为您提供一个断点和堆栈跟踪的位置,让您能够非常快速地找到问题。
它不会向您的发布版本添加任何代码。
归档时间: |
|
查看次数: |
113 次 |
最近记录: |