Вызов метода в ViewDidLoad () - PullRequest
       36

Вызов метода в ViewDidLoad ()

2 голосов
/ 08 февраля 2012

Я вызываю метод для ключевого события, который обновляет метку.

    [self updateFolderText];

Когда я делаю это в методе события, он работает, но когда я пытаюсь сделать это в ViewDidLoad (), я получаю ошибку компилятора.

- (void)viewDidLoad
{
    [super viewDidLoad];     
    [self updateFolderText];
}

Я получаю следующую ошибку:

    error: Automatic Reference Counting Issue: Receiver type 'ViewController' 
for instance message does not declare a method with selector 'updateFolderText'

Эмм ... Я думаю, это должно быть тривиально ... Я новичок в объективе-c. Благодарю. :)

Ответы [ 4 ]

4 голосов
/ 08 февраля 2012

Возможно, проблема в том, что ваш метод updateFolderText определен ниже viewDidLoad. Переместите свой код на updateFolderText ниже, и он должен работать.

Или вы можете объявить метод явно в вашем классе. Добавьте следующее выше @implementation.

@interface className()
-(void)yourMethod; //not sure how youve fully define updateFolderText
@end

или, как вы говорите, вы также можете определить его в своем заголовочном файле:

-(void)yourMethod; //not sure how youve fully define updateFolderText
2 голосов
/ 08 февраля 2012

Убедитесь, что ваш метод объявлен в интерфейсе вашего класса. Для этого есть два варианта. Чтобы объявить его как общедоступный метод для вашего класса, вы должны поместить его в файл заголовка (.h).

Декларация будет выглядеть примерно так:

@interface myClass : UIViewController
- (void)updateFolderText;
@end

Объявить - это метод, который доступен только в вашем классе (ну, не совсем, но эффективно), тогда вы можете поместить его в начало вашего файла .m, перед @ реализацией

@interface myClass ()
- (void)updateFolderText;
@end

Этот второй подход делает метод "закрытым" в отношении предупреждений времени сборки. Обратите внимание, что на самом деле класс все еще будет отвечать на этот селектор во время выполнения.

2 голосов
/ 08 февраля 2012

Вам нужно убедиться, что вы объявили функцию updateFolderText в .h viewcontroller перед @end обычно (для публичных функций) или для частных функций вы объявили бы ее в начале .m с помощью

@interface viewcontrollername()
-(void)updateFolderText;
@end

вероятно, он работал где-то еще в коде, потому что у вас есть сама функция выше, где она вызывается

1 голос
/ 08 февраля 2012

Убедитесь, что -(void)updateFolderText определено либо в вашем файле .h, либо в вашем личном интерфейсе в файле .m.Кроме того, если -(void)updateFolderText физически расположен над методом viewDidLoad в вашем файле .m, он должен видеть его нормально.

...