我开始线程程序员有一个常见的错误,“..没有实现选择器..”,除了它列出了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库本身对其内存区域有限制) - 我认为库可能会运行内存不足然后重置然后错误就会消失一段时间。
真奇怪的是 - 今天早些时候我认为我已经线程代码实际工作..
答案 0 :(得分:2)
尝试:
[NSThread detachNewThreadSelector: @selector(doPrintDisc:)
toTarget: self
withObject: labelOptions];
代替。