【发布时间】:2026-02-22 10:20:04
【问题描述】:
设置如下:
- 我在 nib 文件中有一个 cocoa 对象,该对象在 NSWindow 和视图加载时加载
- 可以关闭窗口
- 我还以编程方式访问对象
现在在某些情况下发生的情况是当我尝试向对象发送消息时发生崩溃,但它之前已被释放(因为窗口已关闭)。崩溃看起来像这样:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000017
Crashed Thread: 0
Dispatch queue: com.apple.main-thread
Application Specific Information:
objc_msgSend() selector name: ...
有没有办法检查对象是否可用?检查 nil 不起作用,它不是 nil。可能控制流并不完美,我可以重写应用程序的其他部分来解决这个问题,但我认为这是一个更普遍的问题,我没有解决方案,归结为:
如何确保从 nib 加载的对象在解除分配时设置为 nil?
【问题讨论】:
标签: objective-c cocoa memory-management null