为什么不应该继承UIButton?

我曾问过一些关于将a继承为子类的问题UIButton,有几个人告诉我我不应该对a进行子类化UIButton。


子类化a的负面影响是UIButton什么?而且我知道这很模糊,但是将a子类化的其他替代方法还有哪些UIButton?


守着一只汪
浏览 571回答 3
3回答

紫衣仙女

这是因为它的UIButton特殊之处在于,+buttonWithType:为了使其按预期工作,需要一些复杂性/微妙性/限制(即,特别是供您定义的其他替代)。它比通常的-initWithFrame:(和-initWithCoder:,如果在XIB中使用)要多。IDK为什么框架作者允许这些细节泄漏到我们的域中,但这是我们现在必须解决的问题。限制是您的实现不得依赖(即扩展)预设的系统按钮样式。您必须假设UIButtonTypeCustom作为UIButton子类的起点。

沧海一幻觉

如果您只是想通过自己的“子视图”来寻找更轻量的东西,则应该将UIControl子类化。UIButton子类化UIControl并可以处理事件,例如:[mySubclassedButtonFromUIControl addTarget:self action:@selector(_doSomething:) forControlEvents:UIControlEventTouchUpInside];UIControl子类化UIView,因此您可以在UIControl子类包含的任何视图上干净地layoutSubviews,并避免UIButton附带的不必要的视图。从本质上讲,您只是在创建自己的“ UIButton”,而避免了不必解决的行为和功能。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS