首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标-C:波波夫似乎总是零

目标-C:波波夫似乎总是零
EN

Stack Overflow用户
提问于 2018-07-27 16:00:44
回答 1查看 58关注 0票数 1

我目前正在为SketchApp编写一个带有可可的插件。

我尝试在那里使用NSPopover,单击按钮时应该由IBAction触发。问题是:弹出器没有出现,当检查变量时,应该保存弹出器,它是nil

我在Interface中创建了NSPopover,所以不是以编程的方式在代码中创建;然后在链接的类头文件中定义IBOutlet绑定;最后在实现类中使用这个变量。

这是我的源代码:

MyComponent.h

代码语言:javascript
复制
// imports skipped...

@interface

@property (nonatomic, weak) IBOutlet NSTextField *componentDescription;
@property (nonatomic, weak) IBOutlet NSTextField *componentGuid;
@property (nonatomic, weak) IBOutlet NSButton *guidCopyButton;
@property (nonatomic, weak) IBOutlet NSPopover *popover;

-(IBAction)onCopyButton_Clicked:(id)sender;

@end

MyComponent.m

代码语言:javascript
复制
-(IBAction)onCopyButton_Clicked:(id)sender {

    // copy stuff to clipboard
    // [...]

    // show copied popover
    [_popover showRelativeToRect:[sender bounds] 
                          ofView:sender 
                   preferredEdge:NSMinYEdge];
}

在我的xib视图文件中,我将NSPopover对象链接到IBOutlet NSPopover *popover;。但是,在我的类实现中检查_popover时,总是nil

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-28 08:41:57

好吧,在推特之后,我想我终于明白了到底出了什么问题。将内存模式从@property (nonatomic, weak) NSPopover *popover;更改为... (nonatomic, strong) ...;后,实例不再是nil

我认为NSButton (例如)的不同之处在于,该按钮是在xib模板中使用的,因此该按钮的引用不会被清除。然而,Popover并不是直接“使用”的,所以在实际使用之前,它可能会被清理干净。因此,将其从weak改为strong似乎就是重点所在。

然而,,这种调整是否有意外的/意外的副作用,我可能想以某种方式加以解决?我现在就得自己去处理破坏吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51561619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档