Я хочу, чтобы загорелся какой-то код, когда свойство было доступно и изменено. Я использую @property
и @synthesize
в своем коде для моих иваров. Свойства сохранены, поэтому я хотел бы сохранить этот материал управления памятью автоматически генерируемый @synthesize
.Как обеспечить дополнительную пользовательскую реализацию методов доступа при использовании @synthesize?
Однако я предполагаю, что @synthesize
сообщает компилятору, что он генерирует код методов доступа, где @synthesize is
, поэтому большинство случаев в верхней части кода, правильно?
И когда у меня есть имущество foo
, я получаю -setFoo
и -foo
методов. Могу ли я затем сделать такой способ, чтобы выполнить еще один пользовательский код при изменении свойства?
-(void)setFoo {
// custom stuff
}
Теперь это проблема. Как выполнить первый? Я не хотел бы иметь другое имя здесь. Возможно ли, чтобы директива @synthesize
создала другие имена для методов getter и setter, которые я тогда называю легко? И я все равно смогу использовать синтаксис точек, чтобы получить к ним доступ?
FYI, ваш пример setter имеет ошибку, поскольку вызов его дважды с тем же объектом может привести к тому, что этот объект будет отменен до его сохранения. Не очень-то большое дело, но это иллюстрирует, как трудно добиться того, чтобы все было правильно. –
Я не уверен, что я последую за вами, не могли бы вы объяснить, как это должно быть написано (не то, чтобы я не верю вам, я хотел бы знать, как это сделать правильно). Спасибо :) – jbrennan
О, nvm Я вижу проблему, я обновлю ее, чтобы отразить изменения. – jbrennan