GVKun编程网logo

Swift 1.2中的@noescape属性(swift scenedelegate)

10

在本文中,我们将给您介绍关于Swift1.2中的@noescape属性的详细内容,并且为您解答swiftscenedelegate的相关问题,此外,我们还将为您提供关于2.6Swift中的元组(Tup

在本文中,我们将给您介绍关于Swift 1.2中的@noescape属性的详细内容,并且为您解答swift scenedelegate的相关问题,此外,我们还将为您提供关于2.6 Swift中的元组(Tuples) [Swift原创教程]、@noescape @escaping @autoclosure、Apple / Swift中的Swift函数对象包装器、AWESOME SWIFT-swift.libhunt.com-swift类库网站的知识。

本文目录一览:

Swift 1.2中的@noescape属性(swift scenedelegate)

Swift 1.2中的@noescape属性(swift scenedelegate)

Swift 1.2中有一个新属性,函数中带有闭包参数,如文档所述:

这表明该参数仅被调用(或在调用中作为@ noescape参数传递),这意味着它不能超过调用的生命周期。

以我的理解,在此之前,我们可以[weakself]不让闭包强烈引用其类,而self可以为nil或执行闭包时的实例,但是现在,这@noescape意味着闭包将永远不会执行如果该课程取消了初始化。我理解正确吗?

如果我是@noescape对的,当它们的行为非常相似时,为什么要使用由常规函数插入的闭包呢?

答案1

小编典典

@noescape 可以这样使用:

func doIt(code: @noescape () -> ()) {    /* what we CAN */    // just call it    code()    // pass it to another function as another `@noescape` parameter    doItMore(code)    // capture it in another `@noescape` closure    doItMore {        code()    }    /* what we CANNOT do *****    // pass it as a non-`@noescape` parameter    dispatch_async(dispatch_get_main_queue(), code)    // store it    let _code:() -> () = code    // capture it in another non-`@noescape` closure    let __code = { code() }    */}func doItMore(code: @noescape () -> ()) {}

添加@noescape保证闭包不会存储在某个地方,以后使用或异步使用。

从调用者的角度来看,无需关心捕获变量的生存期,因为它们是在调用函数中使用还是根本不使用。另外,我们可以使用隐式self,从而避免键入self.

func doIt(code: @noescape () -> ()) {    code()}class Bar {    var i = 0    func some() {        doIt {            println(i)            //      ^ we don''t need `self.` anymore!        }    }}let bar = Bar()bar.some() // -> outputs 0

另外,从编译器的角度来看(如发行说明中所述):

这样可以进行一些次要的性能优化。

2.6 Swift中的元组(Tuples) [Swift原创教程]

2.6 Swift中的元组(Tuples) [Swift原创教程]

原文:http://www.coolketang.com/staticCoding/5a992424a22b9d0044390e21.html

1. 本节课将为你演示元组的使用。元组包含不同的数据类型,并组成一个复合值。元组是使用逗号隔开,并使用括号括起来的0个或多个类型组成的列表。



2. 定义一个新的元组常量,该常量包含一个整型元素和一个字符串元素,所有元素被包含在左右小括号之内,元素之间以逗号分隔。
3. 你还可以将元组赋值给一个带有元素名称的元组,元素名称的个数要和原元组一一对应。
4. 然后就可以在右侧的实时反馈区,查看元组中的各个元素的值了。
5. 查看元组中的第二个元素的值。
6. 使用键值对的方式,创建第二个元组对象,它也拥有两个元素,第一个元素为字符串类型,第二个元素为整型元素。
7. 接着观察第二个元组对象,在右侧的实时反馈区,显示了元组中的各个元素的值。
8. 通过指定的键,查看元组中第一个元素的值。
9. 接着通过指定的键,查看元组中第二个元素的值。
10. 如果你没有给元组的元素命名,那么可以使用点语法,通过定义好的元组变量或常量,获取它的第1个或其它的元素。
本文整理自:《Swift4互动教程》,真正的 [手把手]教学模式,用最快的速度上手iOS开发和Swift语言,苹果商店App Store免费下载: https://itunes.apple.com/cn/app/id1320746678 ,或扫描本页底部的二维码。课程配套素材下载地址: 资料下载

@noescape @escaping @autoclosure

@noescape @escaping @autoclosure

原帖地址:http://www.jb51.cc/article/p-heffjixu-c.html

@noescape 非逃逸闭包
当闭包作为参数传递进函数时,如果这个闭包只在函数中被使用,则开发者可以将这个闭包声明成非逃逸的,即告诉系统当此函数结束后,这个闭包的生命周期也将结束,这样做的好处是可以提高代码性能,将闭包声明成非逃逸的类型使用@noescape关键字。
(1) 默认,swift 3.0 弃用,函数结束后,这个闭包的生命周期也将结束。
(2) 在其内部如果需要使用self这个关键字,self可以被省略。

@escaping 逃逸闭包
逃逸的闭包常用于异步的操作,这类函数会在异步操作开始之后立刻返回,但是闭包直到异步操作结束后才会被调用。例如这个闭包是异步处理一个网络请求,只有当请求结束后,闭包的生命周期才结束。当闭包作为函数的参数传入时,很有可能这个闭包在函数返回之后才会被执行。

@autoclosure 自动闭包
(1)默认非逃逸
(2)闭包也可以被自动的生成,这种闭包被称为自动闭包,自动闭包自动将表达式封装成闭包。
(3)自动闭包不接收任何参数,被调用时会返回被包装在其中的表达式的值。
(4)当闭包作为函数参数时,可以将参数标记 @autoclosure 来接收自动闭包。
(5)自动闭包能够延迟求值,因为代码段不会被执行直到你调用这个闭包。
(6)自动闭包默认是非逃逸的,如果要使用逃逸的闭包,需要手动声明: @autoclosure @escaping 旧版本:@autoclosure(escaping)

//(a)自动闭包演示
var students = ["A","B","C"]
let studentsProvider = { students.remove(at: 0) } //自动闭包自动将表达式封装成闭包
studentsProvider()

//(b)自动闭包演示
var list = [1,2,3,4,5,6]

//创建一个显式闭包
let closures = {
    list.append(7)
}

print(list)  //将打印[1,2,3,4,5,6]

closures()
print(list)  //引用传递,将打印[1,6,7]


func func1(closure: ()->Void) -> Void {
    //执行显式的闭包
    closures()
}

func func2(auto: @autoclosure ()->Void) -> Void {
    //执行自动闭包
    auto()
}

//显式闭包
func1(closure: closures)
print(list)   //将打印[1,7,7]

//将表达式自动生成闭包
func2(auto: list.append(8))
print(list)  //将打印[1,8]

Apple / Swift中的Swift函数对象包装器

Apple / Swift中的Swift函数对象包装器

看完之后:

  • https://github.com/rodionovd/SWRoute/wiki/Function-hooking-in-Swift
  • https://github.com/rodionovd/SWRoute/blob/master/SWRoute/rd_get_func_impl.c

我了解到,Swift函数指针由swift_func_wrapper和包装swift_func_object(根据2014年的文章)。

我想这在Swift
3中仍然有效,但是我找不到https://github.com/apple/swift中哪个文件最能描述这些结构。

谁能帮我?

AWESOME SWIFT-swift.libhunt.com-swift类库网站

AWESOME SWIFT-swift.libhunt.com-swift类库网站

https://swift.libhunt.com/categories/688-events

29 Events libraries and projects

  • ORDERED BY POPULARITY
  • ORDER BY DEV ACTIVITY
  •  ReactiveCocoa

      10.0   7.3  Objective-C
    ReactiveCocoa (RAC) is a Cocoa framework inspired by Functional Reactive Programming. It provides APIs for composing and transforming streams of values over time.
  •  RxSwift

      9.9   8.8 L3  Swift
    Microsoft Reactive Extensions (Rx) for Swift and iOS/OSX platform.
  •  PromiseKit

      9.8   8.7 L5  Swift
    async promise programming lib.
  •  ReSwift

      9.6   6.3 L5  Swift
    Unidirectional Data Flow in Swift
  •  Bond

      9.3   8.8 L1  Swift
    a Swift binding framework.
  •  BrightFutures

      8.3   4.7 L4  Swift
    promise and future lib for swift.
  •  Katana

      8.2  8.7 L4  Swift
    Swift apps a la React and Redux.
  •  ReactorKit

      7.8   6.4  Swift
    A framework for reactive and unidirectional application architecture.
  •  ReactKit

      7.4   0.0 L3  Swift
    Swift Reactive Programming.
  •  FutureKit

      6.4  0.7 L2  Swift
    A Swift based Future/Promises Library.
  •  SwiftEventBus

      6.4   3.2 L5  Swift
    A publish/subscribe event bus optimized for iOS.
  •  EmitterKit

      5.7  3.5 L5  Swift
    an implementation of event emitters and listeners in swift.
  •  Signals

      4.9   3.3 L5  Swift
    replaces delegates and notifications.
  •  Safe

      4.9   0.0 L2  Swift
    A modern concurrency and synchronization for Swift.
  •  snail

      4.5   7.1 L5  Swift
    An observables framework for Swift
  •  Reactor

      4.1   2.4 L5  Swift
    Powering your RAC architecture.
  •  VueFlux

      3.8  6.8  Swift
    Unidirectional Data Flow State Management Architecture
  •  SignalKit

      3.7   0.0 L5  Swift
    Swift event and binding framework.
  •  Observable

      3.7   6.2  Swift
    The easiest way to observe values.
  •  When

      3.4   5.4 L5  Swift
    A lightweight implementation of Promises in Swift.
  •  Caravel

      3.3   0.0 L2  Swift
    A Swift event bus for UIWebView and JS.
  •  Future

      2.5   0.0 L4  Swift
    A micro framework providing Future.
  •  NoticeObserveKit

      2.3   0.0 L5  Swift
    NoticeObserveKit is type-safe NotificationCenter wrapper that associates notice type with info type.
  •  Aftermath

      1.8   0.0 L5  Swift
    Stateless message-driven micro-framework in Swift.
  •  Notificationz

      1.6   2.5 L5  Swift
    Helping you own NSNotificationCenter by providing a simple,customizable adapter.
  •  Forbind

      1.2   0.0 L4  Swift
    Functional chaining and Promises in Swift.
  •  ReduxSwift

      1.0   0.0 L5  Swift
    Predictable state container for Swift apps too
  •  PureFutures

      0.7   0.0 L4  Swift
    Futures and Promises library.
  •  SSEventFlow

      0.3  4.4 L5  Swift
    A type safe alternative to NSNotification,inspired by Flux.

今天的关于Swift 1.2中的@noescape属性swift scenedelegate的分享已经结束,谢谢您的关注,如果想了解更多关于2.6 Swift中的元组(Tuples) [Swift原创教程]、@noescape @escaping @autoclosure、Apple / Swift中的Swift函数对象包装器、AWESOME SWIFT-swift.libhunt.com-swift类库网站的相关知识,请在本站进行查询。

本文标签: