Dev*_*shi 5 inheritance uikit swift
在Objective-C中,我们可以这样做:
一个.导入超类中的文件
#import "MyAwesomeClass.h"
@interface MySuperViewController : UIViewController
@end
@implementation MySuperViewController
- (void)viewDidLoad {
[super viewDidLoad];
//MyAwesomeClass allocated, initialized, used
MyAwesomeClass *awesomeClass = [MyAwesomeClass new];
}
@end
Run Code Online (Sandbox Code Playgroud)
湾 使用在超类中导入的文件,在子类中不重新导入它
@interface MySubViewController : MySuperViewController
@end
@implementation MySubViewController
- (void)viewDidLoad {
[super viewDidLoad];
//No compilation error, since MyAwesomeClass already imported in superclass
MyAwesomeClass *awesomeClass = [MyAwesomeClass new];
}
@end
Run Code Online (Sandbox Code Playgroud)
尝试在swift中执行相同的操作会产生编译错误:
一个.在MySuperViewController中导入UIKit
import UIKit
class MySuperViewController : UIViewController {
@IBOutlet weak var enterPrice: UITextField!
}
Run Code Online (Sandbox Code Playgroud)
湾 声明和使用UITextField的对象而不在MySubViewController中导入UIKit
class MySubViewController: MySuperViewController {
// compilation error at below line
@IBOutlet weak var myButton: UIButton!
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以避免在上面的场景中重新导入UIKit吗?请建议.
Dun*_*n C 10
简短回答:
是.我的理解是你需要导入项目中每个Swift 文件所需的所有框架(这是一个逐个文件的要求,而不是逐个类.如果你在一个文件中定义了两个类,你只需要一个导入文件的顶部.)
C中的#import/#include语句是预处理程序指令.就好像包含文件中的代码被复制/粘贴在include的位置.如果在超类的标题中包含标题,则超类的标题现在包含展开的内容.因此,当您在子类中包含超类标头时,系统框架标头将作为超类标头的一部分包含在内.
Swift的工作方式略有不同.
归档时间: |
|
查看次数: |
2011 次 |
最近记录: |