gpt4 book ai didi

swift - swift 中的箭头运算符

转载 作者:搜寻专家 更新时间:2023-11-01 05:37:08 25 4
gpt4 key购买 nike

我正在尝试在一个 swift 项目中采用一个用 objective-c 编写的 SDK。初始化SDK的objective-c方式如下:

@implementation ViewController
nokeSDK *nokelock;

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

//INITIALIZE NOKE SDK
nokelock = [[nokeSDK alloc] init];
nokelock->cmd = [[nokecommand alloc] init];

我不相信 swift 中有与箭头运算符等效的东西,所以是否仍然可以初始化?我似乎找不到关于他的特定主题的任何信息。

最佳答案

在 Objective-C 中,属性只是访问器方法的语法糖;如果,通常情况下,这些是实例变量的前端,您可以通过正确的隐私访问绕过访问器方法(或者首先不使用它们)并直接获取/设置实例变量。这就是您的代码正在做的事情。

但是 Swift 并没有做出那种区分。在类型声明的顶层声明的变量,在 Swift 中, 是一个属性;在幕后,存储的属性具有访问器方法,并且您在获取/设置属性时会自动传递这些方法。没有要获取/设置的单独实例变量。

为了明白我的意思,制作一个带有类 Thing 的混合 Swift/Objective-C 应用程序,其界面如下所示:

@interface Thing : NSObject {
@public
NSString* s;
}

现在创建生成的界面。你会发现,在 Swift 中,s 是无处可见的。

据推测,因此,要重写您的代码,您需要将 cmd 变成一个属性,或者至少提供一个 setter 方法。否则,Swift 将永远无法设置 Objective-C cmd 实例变量。当然,如果您还需要用 Swift 重写 nokeSDK,那么您的问题就结束了,因为您现在可以随心所欲了。

关于swift - swift 中的箭头运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691078/

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