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

时间:2013-06-22 22:49:47

标签: objective-c cocoa nib nspopover

这就是我所做的。

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

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

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

    popVC = [[NSViewController alloc] init];

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

    enter image description here

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

1 个答案:

答案 0 :(得分:11)

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


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

popVC = [[NSViewController alloc] init];

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