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