Я знаю, что модель Синглтона обсуждалась очень часто. Но поскольку я не до конца понимаю механизм управления памятью в Objective-C, поэтому, когда я объединил реализацию Singleton с многопоточностью, я получил большую ошибку и потратил целый день на ее устранение.
У меня был одноэлементный объект, давайте назовем его ObjectX
. Я объявил объект внутри ObjectX
, который отсоединит новый поток, давайте назовем этот объект objectWillSpawnNewThread
, когда я вызвал
[[ObjectX sharedInstance].objectWillSpawnNewThread startNewThread];
Новый поток не может быть выполнен правильно, и, наконец, я обнаружил, что не должен объявлять объект objectWillSpawnNewThread
внутри класса singleton.
Вот мои вопросы:
- Как Objective-C выделяет статический объект в памяти? Где Objective-C выделяет их (стек основного потока или где-то еще)?
- Почему это не удастся, если мы создадим новый поток внутри одноэлементного объекта?
Я искал документы языка Objective-C [ObjC.pdf
] и Objective-C memory management
, возможно, я что-то пропустил, но в настоящее время я не смог найти никакой полезной информации.