ios - 具有可选 IBOutlet 的属性多态性

标签 ios objective-c oop memory-management properties

我的 iOS 项目中有一个 UITableViewCells 的多态链(针对问题进行了简化):

   ====================
  | BaseCellWithButton |
   ====================
            ^
            |
            |
 ========================
| BaseCellWithTwoButtons |
 ========================

BaseCellWithButton 有 1 个属性:

@property (nonatomic, strong) UIButton* button;

BaseCellWithTwoButtons 足够复杂,我想创建一个 Nib 。我知道 IBOutlet 属性通常是 (nonatomic,weak)IBOutlet ...,但我想像 (nonatomic,strong)IBOutlet ... 那样声明它,所以我可以选择将它设置在 Nib 的子类中,但如果没有,我可以在父类中实例化它。

这是一种不好的做法吗?有没有更好的方法来实现多态性,同时允许子类创建 Nib 并仍然重用父属性?

最佳答案

您可以在 BaseCellWithButton 类中将 button 声明为 IBOutlet,然后在任何子类中连接来自 xib 的按钮。

enter image description here

我附加了示例文件,您可以将其添加到任何项目中,并查看它是如何工作的。

有 Base 类和 Child 类。

如果您计划通过父类中的代码实例化它,那么strong引用也是最佳实践

在基类中,声明了按钮,但仅在子类中连接到xib https://dl.dropboxusercontent.com/u/48223929/SubclassTableCellsExample.zip

关于ios - 具有可选 IBOutlet 的属性多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27692007/

相关文章:

iphone - 将图像数组添加到 ScrollView Objective-C

C++:为结构中的每个成员执行方法调用的方法

ios - 如何从 Firebase 快照解析单个字典?

ios - 在 IOS 上获取用户特定的 ID

ios - 如何正确处理 realm.io 关系的创建和更新

ios - AudioQueueDispose延迟

ios - 如何从 iOS Swift 中的框架中关闭相机 Controller ?

ios - 将 Base 64 图像字符串 POST 到 iOS 上的服务器

oop - 抽象数据类型与非抽象数据类型(Java 中)

java - 如何组织 Java 文本冒险的类和列表