【问题标题】:What does this block mean in Swift - Alamofire?这个块在 Swift - Alamofire 中是什么意思?
【发布时间】:2015-07-12 06:14:36
【问题描述】:

这是 Alamofire/Manager.swift 中的代码块:

  • 它位于名为“public class Manager”的类中

public static let sharedInstance: Manager = {
    let configuration: NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.HTTPAdditionalHeaders = Manager.defaultHTTPHeaders

    return Manager(configuration: configuration)
}()

显然,这是“让某物等于闭包”,但我不明白行尾的“()”是什么意思?

推迟代码的执行?如何? (在我看来,执行不会因为它有“()”而被推迟?我想知道为什么这不会导致内存圈的存在?它返回 Manger 本身,返回的新实例也将做同样的事情,返回一个新的自我......

为什么不用一个关键词“懒惰”?

我有一种奇怪的感觉,我在其他地方也出现过这种用法。我现在正在学习 Swift 60 天。我是快还是慢?如何也成为 iOS 开发者?(我的意思是如何成为真正的开发者,而不是注册程序)

现在我有点困惑并阅读了我能得到的所有源代码。有时我觉得官方文档和 Xcode 很烂,我不知道如何从头开始阅读源代码。有什么提示和建议吗?

【问题讨论】:

  • Re:学习 iOS 开发 - 斯坦福大学有免费(和高质量)视频课程供您学习 SwiftObjective C
  • @IslamQ。我已经上过#Stanford 的课程,我觉得它相对来说太简单了。另一方面,我遇到了无数的问题(我学习 python 时没有问题),包括如何为应用程序设计图标,以及为太吧项目。 & 自定义视图和动画。 2 如何阅读 Xcode 6.3 中不存在的旧 API 的官方指南。只是无奈。
  • 那你有没有去raywenderlich.com和其他教程网站学习不同的技巧?另外,我发现真正有用的是实际创建一个应用程序...您将在旅途中了解与您的需求相关的任何内容...
  • @IslamQ。谢谢你的建议。我会试试的。只是发现我可能还需要第二个显示器......开发一个应用程序。

标签: ios swift alamofire


【解决方案1】:

这将使用闭包的结果初始化sharedInstance(如果没有最后的括号,它只会将其初始化为闭包本身)这是一种标准语法,用于使用对于简单表达式而言过于复杂的初始化程序来初始化变量。在此需要多个语句,以便可以初始化 HTTPAdditionalHeaders

【讨论】:

  • 所以 const sharedInstance 将是一个新的 Manager 类的实例。没问题。
  • 但是新的 Manger 实例也会有这个名为 sharedInstance 的属性,它将是一个新的 Manger 实例。这个实例也会有 sharedInstance,然后它会有一个新的实例。这不会结束。?
  • 谢谢你。 ..我想我应该先尝试阅读所有源代码文件并使用调试工具。
  • 变量声明前使用的“static”关键字将变量标记为类(或类型)变量而不是实例变量。因此,类或类型的所有实例共享它的一个副本。
【解决方案2】:

好吧,我犯了一个错误。诀窍在于sharedInstance使用了关键字“static”这个很常见,但是在我最熟悉的python中,不要使用这个关键字。

根据官方指南:

“您还可以定义属于该类型本身的属性,而不是该类型的任何一个实例。无论您创建多少该类型的实例,这些属性都只会有一个副本。这些类型的属性称为类型属性。”

Apple Inc. “Swift 编程语言”。电子书。 https://itun.es/cn/jEUH0.l

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    相关资源
    最近更新 更多