Error[8]: Undefined offset: 8, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

苹果新的编程语言Swift如何处理块和异步请求?

(Objective-)C块的Swift等效项称为闭包。《The Swift Programming
Language》一书中有一整章关于它们的内容。

根据使用闭包的上下文,可以使用非常简洁的语法声明/使用它。例如,可以采用如下方法

(success: Bool, error: NSError) - >Void
调用采用签名的完成处理程序的方法:

someMethod(otherParameters: otherValues, completionHandler:{ success, error in    if !success { NSLog("I am a leaf on the wind: %@", error) }})

在闭包本质上提供流控制的情况下,还有一种尾随的闭包语法可以很好地理解。而且,您可以在想要简短的时候删除参数名称(以牺牲可读性为代价,但是在某些明显的情况下(如下面所示)是可以的)。通常,

return
语句也是隐式的。

myArray.sort { 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {    // do some async stuff    NSOperationQueue.mainQueue().addOperationWithBlock {        // do some main thread stuff stuff    }}
< }let squares = myArray.map { value in value * 2}

Swift本身没有异步请求的任何内容,因此您可以使用现有的API。不过,您可以使用结尾的闭包语法:

self

在大多数情况下,您无需担心像使用ObjC块那样使用Swift闭包创建参考循环。简而言之,捕获语义足够类似于大多数事物所需的“工作方式”,但又有足够的区别,以至于块/闭包使用的通用模式(例如,分派到后台/主线程并引用
强大的闭包参考周期”以获取完整的解释。
的)。属性)不会引起循环。

循环仍然是可能的,但是有一个解决方案。这个答案已经有点长了,因此请查看文档中的“[+++]



)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
苹果新的编程语言Swift如何处理块和异步请求?_随笔_内存溢出

苹果新的编程语言Swift如何处理块和异步请求?

苹果新的编程语言Swift如何处理块和异步请求?,第1张

苹果新的编程语言Swift如何处理块和异步请求?

(Objective-)C块的Swift等效项称为闭包。《The Swift Programming
Language》一书中有一整章关于它们的内容。

根据使用闭包的上下文,可以使用非常简洁的语法声明/使用它。例如,可以采用如下方法

(success: Bool, error: NSError) - >Void
调用采用签名的完成处理程序的方法:

someMethod(otherParameters: otherValues, completionHandler:{ success, error in    if !success { NSLog("I am a leaf on the wind: %@", error) }})

在闭包本质上提供流控制的情况下,还有一种尾随的闭包语法可以很好地理解。而且,您可以在想要简短的时候删除参数名称(以牺牲可读性为代价,但是在某些明显的情况下(如下面所示)是可以的)。通常,

return
语句也是隐式的。

myArray.sort { 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {    // do some async stuff    NSOperationQueue.mainQueue().addOperationWithBlock {        // do some main thread stuff stuff    }}
< }let squares = myArray.map { value in value * 2}

Swift本身没有异步请求的任何内容,因此您可以使用现有的API。不过,您可以使用结尾的闭包语法:

self

在大多数情况下,您无需担心像使用ObjC块那样使用Swift闭包创建参考循环。简而言之,捕获语义足够类似于大多数事物所需的“工作方式”,但又有足够的区别,以至于块/闭包使用的通用模式(例如,分派到后台/主线程并引用
强大的闭包参考周期”以获取完整的解释。
的)。属性)不会引起循环。

循环仍然是可能的,但是有一个解决方案。这个答案已经有点长了,因此请查看文档中的“



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5171574.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存