gpt4 book ai didi

swift : import UIKit in each subclass?

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:04 26 4
gpt4 key购买 nike

在 objective-C 中我们可以这样做:

一个。在父类(super class)中导入文件

#import "MyAwesomeClass.h"

@interface MySuperViewController : UIViewController
@end

@implementation MySuperViewController
- (void)viewDidLoad {
[super viewDidLoad];

//MyAwesomeClass allocated, initialized, used
MyAwesomeClass *awesomeClass = [MyAwesomeClass new];
}
@end

在父类(super class)中使用导入的文件,在子类中无需重新导入

@interface MySubViewController : MySuperViewController
@end

@implementation MySubViewController
- (void)viewDidLoad {
[super viewDidLoad];

//No compilation error, since MyAwesomeClass already imported in superclass
MyAwesomeClass *awesomeClass = [MyAwesomeClass new];
}
@end

尝试在 swift 中做同样的事情会出现编译错误:

一个。在 MySuperViewController 中导入 UIKit

import UIKit
class MySuperViewController : UIViewController {
@IBOutlet weak var enterPrice: UITextField!
}

在 MySubViewController 中声明和使用 UITextField 对象而不导入 UIKit

class MySubViewController: MySuperViewController {
// compilation error at below line
@IBOutlet weak var myButton: UIButton!
}

有什么方法可以避免在上述情况下重新导入 UIKit 吗?请提出建议。

最佳答案

简答:

是的。据我了解,您需要在项目的每个 Swift 文件 中导入所需的所有框架(这是逐个文件的要求,而不是逐个类的要求。如果您在一个文件中定义 2 个类单个文件,您只需要在文件顶部导入一个。)

C 中的#import/#include 语句是预处理器指令。就好像包含文件中的代码被复制/粘贴到包含的位置。如果您在父类(super class)的 header 中包含一个 header ,则父类(super class)的 header 现在包含扩展的内容。因此,当您在子类中包含父类(super class) header 时,系统框架 header 将作为父类(super class) header 的一部分包含在内。

Swift 的工作方式略有不同。

关于 swift : import UIKit in each subclass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729600/

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