这是我正在尝试做的事情:
我想将一些方法放到单独的.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)?
另一个奇怪的事情是,如果我完全跳过@declaration,“myCustomClasses.m”中的@implementation运行正常。现在怎么可能?
谢谢你们! 任何帮助非常感谢!! 汉斯
现在,有趣的是,即使我使用新文件创建类别,也会出现同样的建筑错误 - > ObjC - 类别模板。它基本上创建了以下两个文件:
头文件中的:
#import "myViewController.h"
@interface myViewController (myCategories) //<-- "Cannot find interface declaration for 'myViewController'"
@end
并使用.m文件
#import "myViewController+myCategories.h"
@implementation myViewController (myCategories)
@end
这已足以从上面提出错误。
答案 0 :(得分:0)
myCustomClasses.m
可能应该包含myCustomClasses.h
而不是myViewController.h
,因此编译器会看到类别声明。由于myCustomClasses.h
已包含myViewController.h
,因此编译器应具有所有必要的声明。
答案 1 :(得分:0)
我终于开始工作了!
当发生建筑错误时,我将Category-.h文件导入到primery Class的.h文件中:
#import "myViewController+myCategories.h" //<-- in the "myViewController.h"
导致上面的建筑错误。这似乎是错的!所以不要这样做。
我仍然不完全理解“myViewController”类如何在没有导入.h文件的情况下了解它的类别,但是因为这似乎是一种工作方式,我想分享和你在一起。
感谢大家的帮助!!