Если оно есть, оно не является общедоступным и может быть нестабильным.
Если вы нажимаете WTF в своем коде, переименуйте и перенастройте все, чтобы это имело смысл.Поскольку вам также необходим фиктивный объект с фиктивным селектором, вы можете просто добавить одноразовый класс, например CocoaMultithreading
, и затем отправить ему сообщение +beginMultithreading
:
@interface CocoaMultithreading : NSObject
+ (void)beginMultithreading;
@end
int
main(void) {
[CocoaMultithreading beginMultithreading];
/* now do whatever you want */
return EXIT_SUCCESS;
}
@implementation CocoaMultithreading
+ (void)dummyThread:(id)unused
{
(void)unused;
}
+ (void)beginMultithreading
{
[NSThread detachNewThreadSelector:@selector(dummyThread:)
toTarget:self withObject:nil];
}
@end
Это должно быть достаточно явным.
ETA: Александр Стаубо отмечает, что, начиная с OS X 10.5 / iOS 2.0, вы можете вызывать метод -start
на NSThread
напрямую, поэтомуСамый простой способ включить многопоточность Какао будет выглядеть так:
void XXXActivateCocoaMultithreading(void) { [[NSThread new] start]; }
Затем в вашей main
функции:
XXXActivateCocoaMultithreading();
Это также явно, но гораздо менее беспорядочно,(XXX
служит для напоминания о префиксе нестатических функций. Поскольку статические функции часто становятся нестатичными в какой-то момент, префикс их всех с самого начала - хороший ход.)