如何在Swift中引用类?

Nat*_*kle 2 objective-c code-translation swift

就iOS语言而言,我真的只了解Swift,但是我试图学习如何从Objective C进行翻译。我做得很好(我知道C#的帮助),并以此为翻译指南,但是我在指南中没有提到的某些点上感到困惑。

例如,从本教程开始,尝试翻译这些说明对我来说绝对没有意义:

打开新添加的标头CERangeSliderKnobLayer.h并将其内容替换为以下内容:

#import <QuartzCore/QuartzCore.h>

@class CERangeSlider;

@interface CERangeSliderKnobLayer : CALayer

@property BOOL highlighted;
@property (weak) CERangeSlider* slider;

@end
Run Code Online (Sandbox Code Playgroud)

在Swift中会是什么样?

我知道该怎么做import QuartzCore,其余的...

什么是@Class斯威夫特?

什么是 @interface?

我有点明白了@property,我猜我只是这样做:

var highlighted: bool
weak var slider: CERangeSlider
Run Code Online (Sandbox Code Playgroud)

我的意思是,当前我新创建的类如下所示:

import UIKit
import QuartzCore

class CERangeSliderKnobLayer: CALayer {

}
Run Code Online (Sandbox Code Playgroud)

那会去哪里?我假设在课堂上。特别是属性设置。

awp*_*wph 6

首先,在Swift中,您没有接口和实现。您class可以通过Swift编译器来编写实现部分()和接口,而开发人员通常不会看到。将@class不再可用,因为斯威夫特做进口工作适合你。您只需要确保该类是可访问的即可(在项目中,如果是从objc桥接的,或者是从另一个框架导入的)。

您想要的是这样的:

import UIKit
import QuartzCore

class CERangeSliderKnobLayer: CALayer {
    var highlighted: Bool
    weak var slider: CERangeSlider
}
Run Code Online (Sandbox Code Playgroud)

这应该在文件CERangeSliderKnobLayer.swift中

在Swift中@property声明a时,由objc 生成的getter和setter 会自动完成var