虽然编码总是出现关于 IBOutlets 保留计数的相同问题:从 NIB 取消归档对象后保留计数?何时将@property 用于 IBOutlet?设置时保留还是分配?Mac 和 iPhone 的区别?
所以我从 Apple 的文档中阅读了 The Nib Object Life Cycle 。Mac 和 iPhone 上的一些测试应用程序给了我一些奇怪的结果。尽管如此,我还是写了一些规则来处理这个问题,以便在编码时保持快乐,但现在想与社区进行验证并听取您的意见和经验:
- 始终为顶级对象创建 IBOutlet。必要时用于非顶级对象(需要访问)。
- 始终为 IBOutlets 提供如下属性(并在必要时释放它们!):
- Mac 上的顶级对象:
- @property (nonatomic, assign ) IBOutlet SomeObject *someObject;
- @synthesize someObject;
- [self.someObject释放];
- Mac 上的非顶级对象(无版本):
- @property (nonatomic, assign ) IBOutlet NSWindow *window;
- @synthesize someObject;
- iPhone 上的顶级对象(必须保留):
- @property(非原子,保留) IBOutlet SomeObject *someObject;
- @synthesize someObject;
- [self.someObject释放];
- iPhone 上的非顶级对象(应保留):
- @property (nonatomic, 保留) IBOutlet UIWindow *window;
- @synthesize 窗口;
- [self.window释放];
- Mac 上的顶级对象:
旁注:
- 在 Mac 和 iPhone 上,如果可用,则使用 setter 进行插座连接。
- 顶级对象:“没有 [...] 拥有对象”
- 非顶级对象:“任何具有父对象或拥有对象的对象,例如嵌套在视图层次结构中的视图。”
所以问题是:这是正确和好的做法吗?
我希望你能批准或更正它。