错误字符串中的CLASS方法线程“未实现”错误?

时间:2011-03-12 04:58:25

标签: xcode selector nsthread

我开始线程程序员有一个常见的错误,“..没有实现选择器..”,除了它列出了CLASS方法,而不是实例方法。这完全合理,它被定义为实例方法..代码:

主应用代理标题:

@interface LSSampleAppDelegate : NSObject <NSApplicationDelegate>
{
    NSWindow *window;
    LSDataObject labelOptions;
}
-(void) doPrintDisc: (LSDataObject*) labelOptions;
@property (assign) IBOutlet NSWindow *window;
//-(void) userDidClickStop:(id)sender;
@end

线程函数第一行(在委托对象中):

-(void) doPrintDisc: (LSDataObject*) labelOptions {

线程启动代码:

[NSThread detachNewThreadSelector: @selector(doPrintDisc:)
    toTarget: [self class]
    withObject: labelOptions];

错误:

*** -[NSThread initWithTarget:selector:object:]: target does not implement selector (*** +[LSSampleAppDelegate doPrintDisc:])

我知道,printDisc方法可能应该放在labelOptions对象而不是委托中 - 但是我想在进行另一次修改之前让它工作。我今天遇到了足够的问题,因为某种类型的malloc错误似乎出现了,只是没有明显的理由消失(它说它是内存不足,但我严重怀疑它确实是除非lightcribe库本身对其内存区域有限制) - 我认为库可能会运行内存不足然后重置然后错误就会消失一段时间。

真奇怪的是 - 今天早些时候我认为我已经线程代码实际工作..

1 个答案:

答案 0 :(得分:2)

尝试:

[NSThread detachNewThreadSelector: @selector(doPrintDisc:)
toTarget: self
withObject: labelOptions];

代替。