gpt4 book ai didi

Objective-C使用#import和继承

转载 作者:太空狗 更新时间:2023-10-30 03:48:31 25 4
gpt4 key购买 nike

我有一个名为“foo”的假想 UIViewController 类。 foo 继承自 class bar 和 class bar #import 的“Class A”,foo 广泛使用的类。问题是,当我在 foo 中使用类 A 的实例时,我没有收到任何编译器错误,但我确实收到警告,例如,类 A 的实例不响应特定方法。我是否必须显式#import ClassA.h 到类“foo”中?即使 class foo extends extends bar 已经导入了它?

希望这不会太困惑。如果我需要清理任何东西,请告诉我。

最佳答案

听起来您遇到了循环依赖问题。为了解决这个问题,是的,每个实现文件 (.m) 都需要 #import 正确的头文件。但是,如果您尝试让 header 文件 #import 彼此,就会遇到问题。

为了使用继承,您需要知道父类(super class)的大小,这意味着您需要#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

关于Objective-C使用#import和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com