Сеттер метод вопросов

В xcode я заметил, что есть метод, который создается автоматически при использовании свойства.

Например, если я введу @property(nonatomic)BOOL selected; в @interface метод создается в фоновом режиме, который может быть использован в @implementation выглядит так:

-(void)setSelected:(BOOL)selected {}

Теперь я не знаю, как это называется, но я предполагаю, что это называется метод установки, теперь я подумал, что мог бы использовать это для некоторых вещей при установке selected boolean но когда я называю это, и это пусто; ничего не происходит, даже selected получает назначенное значение, и когда я ввожу:

self.selected = selected;

Он попадает в бесконечный цикл, и приложение вылетает, есть ли простой способ разрешить этот бесконечный цикл, или я не должен использовать такие методы?

ФИКСИРОВАННЫЙ

Я синтезировал self.selected и теперь он не зацикливается.

@synthesize selected;

-(void)setSelected:(BOOL)selected_ {
    selected = selected_;
}

1 ответ

Решение

Вам необходимо получить доступ к бэк-iVar для selected свойство в сеттере

-(void)setSelected:(BOOL)selected { if (_selected != selected) { _selected = selected; } }

Назначение self.selected = selected вызовет сеттер, и вызов этого параметра внутри настройки приведет к бесконечному циклу!

Другие вопросы по тегам