Поток "не реализует" ошибку с методом CLASS в строке ошибки? - PullRequest
0 голосов
/ 12 марта 2011

У меня есть общепринятая ошибка для начинающих программистов потоков: «.. не реализует селектор ..» за исключением того, что в ней перечисляется метод 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, которая, похоже, появляется, только чтобы уйти без видимой причины (говорит, что не хватает памяти, но я серьезно сомневаюсьчто это действительно так, если у самой библиотеки lightscribe нет ограничения на зону памяти) - я предполагаю, что библиотеке может не хватить памяти, а затем, возможно, сбросить ее, а затем ошибка исчезнет на некоторое время.

ДействительноСтранно то, что раньше сегодня я думаю, что у был код потока, действительно работающий ..

1 Ответ

2 голосов
/ 12 марта 2011

Попробуйте:

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

вместо.

...