пользовательский делегат в цели c - PullRequest
1 голос
/ 29 апреля 2011

Я сделал класс, подобный этому:

testClass <UIAccelerometerDelegate>

, и я реализую методы делегата.

Затем в другом классе, где я хочу этот делегат, я сделал:

testClass *t = [[testClass alloc]init];
UIAccelerometer *a = [UIAccelerometer sharedAccelerometer];
[a setDelegate: t];

и в dealloc я выпускаю т.

Это работает, но это ли правильный способ написания общего делегата?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Это один из способов написания делегата. Более простым способом было бы реализовать методы делегата в классе, в котором вы создали свой экземпляр testClass, и установить для свойства делегата UIAccelerometer значение self.

.

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


Кроме того, вам необходимо установить для свойства UIAccelerometer делегата значение nil, когда вы освобождаете объект делегата.

0 голосов
/ 29 апреля 2011

В общем, это правильно, но вы должны быть осторожны, решив retain или assign делегат, чтобы избежать циклических ссылок. Я был немного об этом раньше. Вот хороший пост, рассказывающий об этом и о некоторых нюансах, о которых следует знать: Почему делегатам Objective-C обычно дают свойство назначать вместо сохранения?

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