Objective-c сеттер / обратный вызов получателя - PullRequest
0 голосов
/ 28 ноября 2010

У меня есть интерфейс со свойствами.

Я хотел бы знать способ объявления обратного вызова для достижения установщика или получателя его экземпляра.Есть ли способ сделать это?

Извините за мой английский и спасибо за ваши ответы и время.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2010

Я не уверен, правильно ли я понимаю ваш вопрос, но если вы пытаетесь заставить какой-либо код выполняться каждый раз, когда вызывается установщик или получатель, в принципе, есть два способа сделать это:

1) вы можете переписать синтезированный геттер и / или сеттер, как это

Заголовок:

@interface ...
{
   NSString *example;
}
@property (nonatomic, copy) NSString *example;

Реализация:

@implementation ...
@synthesize aString

-(void)setExample:(NSString *)newExample
{
   if (example != newExample)
   {
      [example autorelease];
      example = [newExample copy];

      // YOUR CODE HERE
   }
}

... и аналогично для геттера.

2) вы можете наблюдать переменную через KVO и получать «обратный вызов» при каждом изменении переменной. Это, конечно, запускает ваш код только тогда, когда вызывается установщик, а не получатель.

0 голосов
/ 28 ноября 2010

Если вы объявили @property для своей переменной экземпляра, а затем синтезировали его в своем файле реализации, ваш геттер и сеттер автоматически создаются для вас.Пример для NSMutableArray

@interface ... 
{  
   NSMutableArray *array;
}

@property (nonatomic, retain) NSMutableArray *array;

Затем в вашей реализации:

@implementation ...
@synthesize array;

Как только это будет сделано, вы можете получить и установить значения переменных вашего экземпляра, используя:

Getter: self.array ИЛИ [self array]

Сеттер: self.array = ... ИЛИ [self setArray:...]

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