Objective C пользовательских методов класса не вызывается - PullRequest
3 голосов
/ 09 сентября 2011

Итак, у меня есть этот пользовательский класс с просто тестовым методом, который делает nslog.Я собираюсь использовать этот метод много раз в моем приложении.Интерфейс выглядит следующим образом.

@interface TestViewController: UIViewController {  CMImageMover * imageMover }

Затем в представлении загрузился I:

imageMover = [[CmImageMover alloc] init];

Если я сделаю:

[imageMover testMethod];

Сразу после выделения иinit он работает в функции viewDidLoad, но если я вызываю его снова из другой функции в контроллере представления, ничего не работает, и метод класса не вызывается.

Что я здесь делаю неправильно.Любой другой var, который я объявляю как NSArray / NSTimer, я говорю, и я могу получить к нему доступ и использовать его на своем контроллере.

1 Ответ

2 голосов
/ 09 сентября 2011

Когда вы говорите «если я вызову его снова из другой функции в контроллере представления, ничего не работает», то первое, что нужно проверить, это то, что вы отправляете testMethod.Это может быть ноль, и в этом случае ничего не произойдет.В цели C отправка сообщения на nil ничего не делает.Добавьте NSLog, чтобы узнать, например,

 NSLog(@"imageMover object is: %@", imageOver);
 [imageMover testMethod]; 

Если NSLog показывает, что это ноль - или что-то сумасшедшее - тогда следите за тем, что вы делаете, с помощью imageMover ivar.

Вы упоминаетеМетод класса в вашем вопросе, но не упоминайте его в своих фрагментах кода.

Если вы определили testMethod как метод класса, он, конечно, потерпит неудачу, если вы отправите это сообщение экземпляру,(И он будет шумно проваливаться.) Метод класса будет введен следующим образом:

 + (void) testMethod
 {
       NSLog(@"CMImageMover testMethod called on Class");
 }

Метод экземпляра будет представлен следующим образом:

 - (void) testMethod
 {
       NSLog(@"testMethod called on an instance of CMImageMover");
 }

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

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