【问题标题】:Unrecognized selector sent to instance on custom init method在自定义 init 方法上发送到实例的无法识别的选择器
【发布时间】:2011-07-08 04:33:33
【问题描述】:

我有一个名为 Communicator 的对象。

Communicator 有一个自定义的初始化方法-(id)initWithEmail:(NSString*)theEmail andPassword:(NSString*)thePassword andPlatform:(NSString*)thePlatform;

我的应用委托有一个 Communicator 作为一个名为 communicator 的成员变量。

applicationDidFinishLaunching 我这样做

communicator = [[Communicator alloc] initWithEmail:@"email" andPassword:@"password" andPlatform:@"mac"];

在控制台中它会打印两次-[Communicator initWithEmail:andPassword:andPlatform:]: unrecognized selector sent to instance 0x10064c4b0

该方法存在并已定义。 “communicator”绝对是一个 Communicator 对象。项目编译时没有任何警告。

Communicator 是在我自己制作的自定义框架中定义的。我用了otool,它说initWithEmail:andPassword:andPlatform方法在里面。

似乎我在构建框架时搞砸了一些东西,但我不知道它可能是什么。该项目可以毫无问题地构建、链接和启动。 是否有一些我可能搞砸的项目设置?还有其他想法吗?

【问题讨论】:

  • 可能是一个微妙的错字。请复制并粘贴实际的方法签名。
  • 另外请复制并粘贴整个异常消息。您在左方括号前遗漏了一个重要字符。
  • OT:Apple 对方法命名的建议是不要使用“and”作为参数之间的分隔符,保留它以表示按时间顺序排列,如takeTeacup:(Teacup *)cup spoon:(Silverware *)spoon andStir:(NSInteger *)seconds
  • @Jason:我知道。成员变量声明就像这样Communicator *communicator;

标签: objective-c cocoa macos


【解决方案1】:

我有些东西设置错了。我没有处理自定义框架上的框架安装路径,而是将其复制到框架文件夹中。当然,我忘记了我这样做了,每次我对框架进行更新时,它都会重新回到我停留在框架文件夹中的旧副本。这太令人沮丧了。

【讨论】:

    猜你喜欢
    • 2012-06-13
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    相关资源
    最近更新 更多