gpt4 book ai didi

objective-c - 快速使用 SOMotionDetector

转载 作者:行者123 更新时间:2023-11-30 10:23:23 26 4
gpt4 key购买 nike

我正在尝试在 swift 项目中使用 SOMotionDetector

有没有办法将 Objective C 方法转换为 Swift?

- (void)motionDetector:(SOMotionDetector *)motionDetector locationChanged:(CLLocation *)location
{
...
}

最佳答案

将委托(delegate)方法从 Obj-C 转换为 Swift 与创建标准 Swift 函数类似,但有一个额外的规则:显式参数名称

在您的示例中,它会像这样:

func motionDetector(motionDetector:SOMotionDetector locationChanged location:CLLocation)
{
// Do something here...
}

为什么我们在 location:CLLocation 的第二个参数定义前面有这个 locationChanged

这样您的选择器签名仍保留 motionDetector:locationChanged:,同时允许您的方法参数名称为 location

让我们考虑 Obj-C 中的以下 NSURLConnection 委托(delegate):

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

如果我们将其转换为没有显式参数名称的 Swift,您就会明白为什么这很尴尬:

func connection(connection:NSURLConnection didReceiveData:NSData)
{
self.mutableData.appendData(didReceiveData); // weird local variable name...
}

现在,我们将 didReceiveData 移动为参数名称,但为了清楚起见,将局部变量名称更改为 data:

func connection(connection:NSURLConnection didReceiveData data:NSData)
{
self.mutableData.appendData(data); // Ahhh.. much better!
}

正如您所看到的,它与标准 Swift 函数非常相似,但只需要参数名称。请注意,如果您愿意,您可以对非委托(delegate)函数执行此操作!

关于objective-c - 快速使用 SOMotionDetector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317252/

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