Coo*_*coa 5 cocoa cocoa-touch objective-c c-preprocessor
我有一个名为"foo"的假设UIViewController类.foo继承自类bar和class bar #import的"Class A",这是foo广泛使用的一个类.问题是,当我在foo中使用类A的实例时,我没有得到任何编译器错误,但我确实得到一个警告,例如,类A的实例不响应特定方法.我是否必须将#Amport ClassA.h显式转换为类'foo'?即使class foo扩展了吧,已经进口了吗?
希望这不会太混乱.如果我需要澄清任何事情,请告诉我.
Ada*_*eld 12
听起来你有一个循环依赖问题.为了解决它,是的,每个imlementation file(.m)都需要#import正确的头文件.但是,如果您尝试相互拥有头文件#import,则会遇到问题.
为了使用继承,您需要知道超类的大小,这意味着您需要#import它.但是,对于其他事情,例如作为指针的成员变量,或者作为参数或返回其他类型的方法,您实际上不需要类定义,因此您可以使用前向引用来解决编译器错误.
// bar.h
@class A; // forward declaration of class A -- do not to #import it here
@interface bar : UIViewController
{
A *member; // ok
}
- (A) method:(A)parameter; // also ok
@end
// bar.m
#import "bar.h"
#import "A.h"
// can now use bar & A without any errors or warnings
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2272 次 |
| 最近记录: |