2012-06-25 4 views
0

Если я создаю и использую некоторые классы Objective-C в функции __attribute__((constructor)), и они потенциально могут создавать некоторые автоматически выпущенные объекты, безопасно ли разместить блок @autorelease вокруг этого кода в конструкторе хотя это будет вызвано до main?__attribute __ ((constructor)) function and autorelease

+1

Возможно, вам следует переосмыслить это и реорганизовать некоторые вещи таким образом, чтобы это безумие не требовалось. –

+0

Почему это безумие? Я хочу создать синглтон, который прослушивает некоторые уведомления и делает свое дело автоматически, так что пользователям моего класса просто нужно включить файл .m и ничего не делать. Это вполне разумный способ достичь этого. Я действительно нашел пример, который делает это уже называемым «BPOCUnitXMLReporter», который * не * обертывает код в функции конструктора - я думаю, что он ничего не использует, создает любые объекты с автореализацией. – jhabbott

ответ

1

Насколько я понимаю, блок не является чем-то более особенным, чем в любой другой части кода, поэтому я не понимаю, почему он не должен работать.

+0

Кажется, вы правы - я был не уверен в том, что) как рано называть функции конструктора; и б), если нормально, чтобы первый конец '@ autorelease' заканчивался до' main', а затем еще один запускался в 'main'. Читая это и думая об этом больше, 'main' - это просто функция, подобная любой другой. Конструкторы вызываются до 'main', но все уже готово к работе, поэтому вы можете делать все, что вы можете сделать в верхней части' main'. – jhabbott

Смежные вопросы