我正在设置一个名为"BHAccountBaseViewController"的基本视图控制器和另外两个从基本控制器继承一些基本功能的视图。
- "BHAccountBaseViewController"继承自"UIViewController">
- "BHAccountViewController"(实现UITextFieldDelegate)并从"BHAccountBaseViewController"继承
- 最后,我有一个最近创建的类,我每次都称之为"BHCreateProfileViewController",我只是简单地将#import指令包含到"BHAccountBaseViewController"中以从该类继承Xcode由于APPLE MACH-O LINKER错误而无法编译
clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
想法?这是我的三个头文件
BHAccountBaseViewController
#import <UIKit/UIKit.h>
#import "BHFileManager.h"
@interface BHAccountBaseViewController : UIViewController
@end
BHAccountViewController
#import "BHAccountBaseViewController.h"
@interface BHAccountViewController : BHAccountBaseViewController<UITextFieldDelegate>
@end
BHCreateProfileViewController
#import "BHAccountBaseViewController.m"
@interface BHCreateProfileViewController : UIViewController <UITextFieldDelegate>
@property (strong, nonatomic) id user;
@end
如果我在最后一个文件上注释掉导入,链接器错误就会出现!但我希望能够继承我的基础课程。。。想法?
非常感谢您的帮助!
在上面给出的BHCreateProfileViewController的实现中,我发现代码看起来第一行就错了。如何修复如下:
#import "BHAccountBaseViewController.m"
至
#import "BHAccountBaseViewController.h"
我想知道为什么BHCreateProfileViewController继承自UIViewController而不是BHAccountBaseViewController。你能解释一下吗?
这可能是由于保留周期死锁问题。您必须为此使用前向类声明,即您可以尝试@class而不是#import。请参考以下限制:
目标C:远期类申报
@class与#import
这些可能会有所帮助。
在编译时,编译器实际上会查找接口文件,而不是实现文件。即使.m文件不可用,编译器也不会麻烦。因此,在导入时,您应该导入.h而不是.m