【发布时间】: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