Как автоматические @synthesized ivars влияют на * реальный * размер (MyClass)?

Если я добавлю такие автоматические свойства, как это:Но я НЕ объявляю для них iVars, я могу @ синтезировать их в файле .m следующим образом:и это не работает, компилятор автоматически добавляет iVars - sizeof (MyClass) показывает, что мой класс (как и следовало ожидать) на 16 байт больше, чем без этих свойств, объявленных и синтезированных.Однако, если я их не синтезирую, а реализую так:тогда мой класс вернулся к своему первоначальному размеру.Это определяется размером ВНУТРИ файла .m для MyClass, поэтому на этом этапе компилятор знает, были ли переменные синтезированы или реализованы.Однако другие классы не знают этого только из файла заголовка, sizeof (MyClass) показывает размер БЕЗ дополнительных (автоматических) переменных iVars, независимо от того, синтезированы они или нет.Мне это кажется совершенно запутанным, что sizeof может возвращать другое значение.Как компилятор может правильно вести себя при создании подклассов и при использовании оператора разыменования + смещения ( ---- +: = 3 =: + ---- ) для общедоступных переменных iVars подкласса, если он не может быть уверен в размере класса?
7 голосов | спросил jhabbott 2 22010vEurope/Moscow11bEurope/MoscowTue, 02 Nov 2010 13:36:11 +0300 2010, 13:36:11

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132