gpt4 book ai didi

Objective-C 10.10 NSApplication 委托(delegate)无法调用委托(delegate)类中定义的方法

转载 作者:行者123 更新时间:2023-12-03 17:02:37 27 4
gpt4 key购买 nike

tldr,简单的问题是:在 OS X 10.10 中,我无法调用委托(delegate)类中定义的方法。

部分信息如下:

我有一个示例 Cocoa 项目,它有一个委托(delegate)类,其方法定义如下:

@interface SPVAppDelegate : NSObject <NSApplicationDelegate>
- (void)doSomething;
end

如果我使用10.9 SDK编译项目,我可以在程序的其他部分调用这个方法doSomething,如下所示:

[[NSApp delegate] doSomething];

但是,使用 10.10 SDK,我在编译项目时会收到​​此错误:

No known instance method for selector 'doSomething'

为什么我使用10.10 SDK找不到这个方法?这里的 API 有什么变化吗?

最佳答案

好吧,我想我找到了解决方案,我必须将 [NSApp delegate] 的类型显式转换为委托(delegate)类才能调用该方法,即:

[(SPVAppDelegate *)[NSApp delegate] doSomething];

在 10.10 中,委托(delegate)定义为:

@property (assign) id<NSApplicationDelegate> delegate;

在 10.9 中,它就像:

- (id <NSApplicationDelegate>)delegate;

所以delegate在10.10中变成了真正的属性,但是返回类型仍然是id。我仍然不确定为什么此更改会导致此问题。

关于Objective-C 10.10 NSApplication 委托(delegate)无法调用委托(delegate)类中定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com