Я начал изучать Objective-C несколько недель назад, и я до сих пор не понимаю, как правильно управлять инкапсуляцией класса. Каков наилучший способ объявить переменную частного члена в классе?Объявление частных переменных-членов
Похоже, что правильная установка и настройка для вашей переменной-члена с помощью «@property» - это правильный путь, а не просто объявление «@private» в интерфейсе. Но мне кажется, что это все еще дает другим классам доступ к этим переменным. Даже если вы объявите свойство «readonly», внешний класс может получить доступ к ссылке на переменную-член и изменить ее!
Так что я предполагаю, что лучший способ объявить переменную частного члена - это не включать guetter/setter, не объявляя свойство. Я прав? Или есть лучший способ?
Благодаря
Хорошо, поэтому, используя категорию, я могу полностью скрыть переменную-член. Но я все равно не использую «readonly» для видимого члена, так как он возвращает ссылку на объект. Можно просто изменить ссылку и написать над ней, даже если у нее нет сеттера. –
Хороший вопрос! Я постараюсь выяснить, какой вид защиты - дать ему. Я предполагаю, что как только вы попытаетесь изменить значение вашего ссылочного объекта, он сделает копию, и изменения не распространяются на защищенный объект. Здесь приведена документация: http://developer.apple.com/mac/library/documentation/cocoa/conceptual/objectivec/Articles/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW19 – vfn
@Oliver , не могли бы вы задать для этого еще один вопрос и поместить свой код там, чтобы дать нам лучшее понимание этой проблемы. BTW «непризнанный селектор» означает, что у вас нет этого конкретного селектора, который может быть свойством или методом. Вы уверены, что объявили свойство с привилегиями «readwrite»? – vfn