Xcode - предупреждение Определение метода не найдено. Метод вызова из файла категории

Я создал некоторый метод в файле категории. Я просто хочу повторно использовать эти методы в своих контроллерах представления. Поэтому я импортировал этот файл категории в контроллеры представления и также объявил метод в заголовочном файле. называя это так:

Класс категории:

@interface UIViewController (headerView)
-(UILabel *)someMethod;

@implementation UIViewController (headerView)
-(UILabel *)someMethod{
}

HomeViewController:

@interface HomeViewController : UIViewController
-(UILabel *)someMethod;

@implementation HomeViewController
[self someMethod];

Я получаю предупреждающее сообщение в этой строке:

@implementation HomeViewController

Это работает. Но я хочу убрать это предупреждение. Как мне это сделать?


person Balasubramanian    schedule 24.08.2016    source источник
comment
Что вы подразумеваете под повторным использованием этих методов в моих контроллерах представления? Категории добавляют методы к существующим классам. Единственная проблема с вызовом методов — сделать их определение известным для clang. Похоже, вы пропустили шаг. Возможно, опубликуйте интерфейс категории и покажите, как вы его импортируете.   -  person Avi    schedule 24.08.2016
comment
какое предупреждающее сообщение вы получаете?   -  person vaibhav    schedule 24.08.2016
comment
Покажите весь свой код, как вы создаете категорию и как вы импортируете ее в свой viewcontroller!   -  person Ketan Parmar    schedule 24.08.2016


Ответы (1)


Если вы хотите, чтобы ваша категория была в контроллере представления, сделайте что-то вроде этого

Ваша категория

@interface UIViewController (ExtendedMethods)
- (void)someMethod;
@end

@implementation UIViewController (ExtendedMethods)
- (void)someMethod {
  NSLog(@"Some method");
}
@end

MyViewController.m

#import "MyViewController.h"
#import "UIViewController+ExtendedMethods.h"

@implementation MyViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  [self someMethod];
}
@end
person Konstantin    schedule 24.08.2016
comment
да. Точно так и сделал. Но получаю предупреждающее сообщение. Как это очистить? - person Balasubramanian; 24.08.2016
comment
Вы получаете какие-либо предупреждения об этой строке? - реализация MyViewController - person Balasubramanian; 24.08.2016
comment
Нет, у меня нет предупреждений. Вы уверены, что у вас есть какой-то метод в файле заголовка категории? Может вы неправильно пишете? - person Konstantin; 24.08.2016
comment
Также убедитесь, что вы импортируете #import UIViewController+ExtendedMethods.h в файл, где вы пытаетесь использовать эти методы из категории - person Konstantin; 24.08.2016
comment
я. Я снова объявил someMethod в заголовочном файле MyViewController. Здесь ошибка. Спасибо друг. Спасибо за помощь! - person Balasubramanian; 24.08.2016