Как сделать недвижимость частной? - PullRequest
10 голосов
/ 09 августа 2011

Кто-то сказал мне, что я могу сделать свойства приватными, чтобы только экземпляр класса мог ссылаться на них (через self.)

Однако, если я использую @private в интерфейсе класса, а затем объявляю свойствообычно к нему все еще можно получить доступ извне класса ... Так как я могу сделать свойства частными?Пример синтаксиса, пожалуйста.

Ответы [ 2 ]

21 голосов
/ 09 августа 2011

Вам необходимо включить эти свойства в расширение класса. Это позволяет вам определять свойства (и в последнее время iVars) в вашем файле реализации в объявлении интерфейса. Это похоже на определение категории, но без имени в скобках.

Итак, если это ваш файл MyClass.m:

// Class Extension Definition in the implementation file
@interface MyClass()

@property (nonatomic, retain) NSString *myString; 

@end

@implementation MyClass

- (id)init
{
    self = [super init];
    if( self )
    {
        // This property can only be accessed within the class
        self.myString = @"Hello!";
    }
}

@end
5 голосов
/ 09 августа 2011

Объявите свойство в файле реализации (.m), например:

@interface MyClass()

@property (nonatomic, retain) MyPrivateClass *secretProperty;

@end

Вы сможете использовать это свойство в своем классе без предупреждения компилятора.

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