Вот что я пытаюсь сделать:Объявление подкласса в ObjC терпит неудачу
Я хочу, чтобы убрать некоторые методы в отдельный .h и .m файлов для лучшего обзора моего кода.
Итак, у меня есть myViewController
, который я хочу расширить с помощью метода myReactionOnAnimationDidEnd:
как категории.
Так что я объявил в "myCustomClasses.h"
следующее распространить его с моим желаемым способом:
#import "myViewController.h"
@interface myViewController (myReactionOnAnimationDidEnd)
- (void)myReactionOnAnimationDidEnd:(NSNotification *)aNotification;
@end
Реализация в "myCustomClasses.m"
является:
#import "myCustomClasses.h"
#import "myViewController.h"
@implementation myViewController (myReactionOnAnimationDidEnd)
- (void)myReactionOnAnimationDidEnd:(NSNotification *)aNotification {
self.myLabel1.text = @"Test";
}
@end
Компилятор генерирует ошибку сборки не удалось «Не удается найти интерфейс декларация для «myViewController»
Итак, вот мои вопросы:
Первая Странная вещь, что все работает нормально, если я сделать то же самое для UIViewController вместо myViewController. Но поскольку myViewController является подклассом UIViewController, почему он не должен работать и для myViewController (@interface iSnahViewController: UIViewController)?
Другое странное, что @implementation в «myCustomClasses.m» работает отлично, если я полностью пропущу на @declaration. Теперь, как это может быть?
Спасибо, ребята! Любая помощь очень ценится !! Hans
Теперь, самое смешное, что эта же ошибка здание приходит даже если я создаю категорию с новым файлом -> ObjC - Категория шаблона. Это в основном создает следующие два файла:
в заголовочном файле:
#import "myViewController.h"
@interface myViewController (myCategories) //<-- "Cannot find interface declaration for 'myViewController'"
@end
и с .m файл
#import "myViewController+myCategories.h"
@implementation myViewController (myCategories)
@end
И это уже достаточно, чтобы вызвать ошибку сверху.
Неясно, какие отношения между myViewController и iSnahViewController. Также, где происходит ошибка компилятора? –
Возможно, вы захотите переформулировать свой вопрос, потому что вы не создаете подкласс, вы создаете категорию. – Martin
@PhillipMills: Извините, я немного небрежно настраивал имена для лучшей читаемости, iSnahViewController - это myViewController (я скорректировал его в своем вопросе) – Hans