Проблема с категориями Objective-C - PullRequest
2 голосов
/ 11 февраля 2011

Следующий код выдает ошибку «Не удается найти объявление интерфейса для StartTimerViewController»

#import "StartTimerViewController.h"

@interface StartTimerViewController (timerMethods) 

-(void)startTimer:(id)sender withTimeIntervalInSeconds:(NSTimeInterval)time 
        andMessage:(NSString *)message
notificationChoice:(BOOL)notificationChoice
      andWithLabel:(UILabel *)theLabel;

-(void)updateLabel:(NSTimer *)timer;

@end

Почему это происходит? StartTimerViewController.h существует и является допустимым классом, который я кодировал. Этот файл должен быть категорией, расширяющей StartTimerViewController.

Вот начало StartTimerViewController.h

#import <UIKit/UIKit.h>
#import "StartTimerViewController+timerMethods.h"

@interface StartTimerViewController : UIViewController {

Ответы [ 2 ]

7 голосов
/ 11 февраля 2011

У вас есть круговая ссылка. Вы не можете включить timermethods.h внутри StartTimerViewController.h, потому что для timerMethods.h требуется StartTimerViewController.h. Вам никогда не нужно, чтобы родитель знал о категории, только категория должна знать о родителе.

Удачи!

0 голосов
/ 11 февраля 2011

Вы импортируете заголовок категории перед объявлением класса.У него никогда не будет возможности увидеть класс, потому что он на первом месте!Итак, переместите #import "StartTimerViewController+timerMethods.h" в конец файла.

...