Можно ли определить ivars в расширении Objective-C? - PullRequest
2 голосов
/ 29 октября 2010

Интересно, можно ли написать что-то подобное в файле .m:

@interface MyController () {//ERROR here
    Foo *privateFoo; 
}
@end

Я сделал это, но я получаю: Expected identifier or '{' before '{' token, мне кажется, я слышал / смотрел видео (WWDC2010), в котором говорится, что это возможно или будет возможно, и в настоящее время его поддерживают только некоторые архитектуры ... но я не совсем уверен и не могу вспомнить название видео.

Я надеюсь, что смогу получить здесь несколько советов.

Игнасио.

Ответы [ 3 ]

8 голосов
/ 29 октября 2010

Вы можете сделать это в современной среде выполнения (64-битная / iOS) с помощью clang («LLVM Compiler 1.5») в Xcode 3.2.3 или 3.2.4, добавив -Xclang -fobjc-nonfragile-abi2 в настройку сборки Other C Flags. (Обратите внимание, что это на самом деле один вариант, а не два.)

Еще один эффект этого флага - заставить свойства синтезироваться по умолчанию.

0 голосов
/ 16 июля 2012

Хотя в нем нет явного указания и поток довольно старый, в этом документе на стр. 75 приведен пример добавления ивара в расширение.

Язык программирования Objective-C

0 голосов
/ 29 октября 2010

Невозможно с этим справиться. Категории определяют только дополнительное поведение, но не состояние.

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