sách gpt4 ai đã đi

iphone - 保留 IBOutlet 数量

In lại 作者:行者123 更新时间:2023-12-03 16:49:07 30 4
mua khóa gpt4 Nike

虽然编码时总是出现有关 IBOutlet 保留计数的相同问题:从 NIB 取消归档对象后保留计数?何时对 IBOutlet 使用 @property?设置时保留还是分配? Mac 和 iPhone 之间的区别?

所以我读了The Nib Object Life Cycle来自苹果的文档。 Mac 和 iPhone 上的一些测试应用程序给了我一些奇怪的结果。尽管如此,我还是写下了一些如何处理这个问题的规则,以便在编码时保持快乐,但现在想向社区进行验证并听取您的意见和经验:

  1. 始终为顶级对象创建 IBOutlet。对于非顶级对象(如果需要)(需要访问)。
  2. 始终为 IBOutlet 提供如下属性(并在必要时释放它们!):
    • Mac 上的顶级对象:
      • @property(非原子,phân phát)IBOutlet SomeObject *someObject;
      • @synthesize someObject;
      • [self.someObject 释放];
    • Mac 上的非顶级对象(无发布):
      • @property(非原子,phân phát)IBOutlet NSWindow *window;
      • @synthesize someObject;
    • iPhone 上的顶级对象(必须保留):
      • @property(非原子,保留)IBOutlet SomeObject *someObject;
      • @synthesize someObject;
      • [self.someObject 释放];
    • iPhone 上的非顶级对象(应保留):
      • @property(非原子,保留)IBOutlet UIWindow *window;
      • @synthesize窗口;
      • [self.window释放];

旁注:

  • 在 Mac 和 iPhone 上, socket 连接是通过 setter (如果有)进行的。
  • 顶级对象:“没有[...]拥有对象”
  • 非顶级对象:“具有父对象或所属对象的任何对象,例如嵌套在 View 层次结构中的 View 。”

所以问题是:这是正确且良好的做法吗?

希望您能批准或更正。

1 Câu trả lời

始终让您的 Nib 的文件所有者是 NSWindowController 或 NSViewController(在 Mac OS X 上)或 UIViewController(在 iPhone 上)的子类,并使用 @property(保留)IBOutlet 为其所有 socket ,在 Controller 子类 -dealloc 方法中进行适当的释放。

此模式在 Mac OS X 和 iPhone 操作系统上都可以正常工作,因为 Mac OS X 上的 NSWindowController 和 NSViewController 为您获取顶级对象的隐式所有权(并在它们自己的 -dealloc 方法中放弃它),并且 iPhone OS 在 nib 加载期间不会为您获取顶级对象的任何隐式所有权。

关于iphone - 保留 IBOutlet 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2097822/

30 4 0
Bài viết được đề xuất: iphone - 如何使用sortUsingFunction :context
Bài viết được đề xuất: objective-c - 使用 Action 选择器预设将项目添加到 NSMenu
Bài viết được đề xuất: iphone - NSUserDefault 存在 -iPHONE SDK
Bài viết được đề xuất: cocoa - 使用 stringWithFormat : as a file path in cocoa
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com