NSThread работает класс - PullRequest
0 голосов
/ 04 мая 2010

Каждый пример, который я нахожу в Интернете (включая Apple doc), устанавливает для себя цель следующим образом:

[NSThread detachNewThreadSelector:@selector(threadedTask) toTarget:self withObject:nil];

Поскольку я хотел бы выполнить более сложную задачу в фоновом режиме (с использованием нескольких методов), я подумал о создании класса Task, который будет выглядеть так:

Task *task = [[Task alloc] init];
[NSThread detachNewThreadSelector:@selector(main) toTarget:task withObject:nil];

но мне интересно, как будут обрабатываться переменные экземпляра моего класса Task? в моем методе main могу ли я безопасно вызывать методы моего класса Task, используя [self myMethod] и изменяя переменные-члены, предполагая, что я единственный поток, обращающийся к нему?

Этот способ работы с потоками мне кажется странным, извините, если мой вопрос глупый ^^

Заранее спасибо

1 Ответ

1 голос
/ 04 мая 2010

Если для каждого Task есть только один NSThread (включая основной поток), тогда да, вы можете делать все, что захотите. Как только несколько потоков смогут одновременно получать доступ к определенным данным, вам нужно будет обеспечить синхронизацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...