Экземпляр класса Objective-C обнулен в alloc? - PullRequest
4 голосов
/ 23 августа 2009

Есть ли какая-либо цель по обнулению памяти, которую c выполняет от моего имени, когда я впервые выделяю экземпляр класса? Я вижу много кода объективного c, который предполагает, что их выходы по умолчанию nil. Если я делаю то же самое, я основываю такое поведение на ложных предлогах?

Ответы [ 2 ]

8 голосов
/ 23 августа 2009

NSAllocateObject возвращает блок памяти, достаточно большой, чтобы включить все ивары в класс; указатель isa установлен на класс, а остальная часть блока заполнена 0. +[NSObject alloc] вызывает +[NSObject allocWithZone:], что затем вызывает NSAllocateObject внутри.

8 голосов
/ 23 августа 2009

Да, все выделенные объекты обнуляются. См. Документация по распределению NSObject . Это гарантируется языком, так что это абсолютно безопасно, и фактически установка членов в 0 будет излишней.

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