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