视图控制器类的出口是弱还是强?OSX应用程序

iOS*_*com 3 cocoa objective-c nib nspopover

这就是我所做的.

  1. 制作一个干净的OSX项目.
  2. 转到main.xib并拖动一个弹出控制器.这在界面构建器上创建了2个可见对象.
  3. 我去了appDelegate.h文件并做了

    ` - @ Property(assign)IBOutlet NSViewController*popVC;

  4. 然后我去了applicationDidFinishLaunching:方法并做了

    popVC = [[NSViewController alloc] init];

结果:我收到以下错误消息:

在此输入图像描述

笔尖上的对象是否应该是弱的,因为它已经被笔尖拥有了?

Wai*_*ain 11

应该是查看控制器的插座strong.NIB不拥有这些对象,它只是一个存档.视图的出口通常应该是,weak但这是因为视图由其超级视图保留(超视图通常由其视图控制器保留).


顺便说一句,你不应该这样做:

popVC = [[NSViewController alloc] init];
Run Code Online (Sandbox Code Playgroud)

因为popVC在加载NIB时正在取消归档,创建和设置.通过自己创建和设置实例,您将丢弃NIB版本.这适用于所有出口 - 当装载NIB时我要填写的出口的目的.

  • xib中顶级项目的出口应该很强,这些顶级对象的任何子视图都可以作为弱IBOutlet添加,因为它们被顶级项目强烈引用. (2认同)