小编Bur*_*ang的帖子

在Swift中混淆强引用循环的例子

这是Apple的文档中的一个示例:

class HTMLElement {

    let name: String
    let text: String?

    lazy var asHTML: Void -> String = {
        if let text = self.text {
            return "<\(self.name)>\(text)</\(self.name)>"
        } else {
            return "<\(self.name) />"
        }
    }

    init(name: String, text: String? = nil) {
        self.name = name
        self.text = text
    }

    deinit {
        print("\(name) is being deinitialized")
    }

}
Run Code Online (Sandbox Code Playgroud)

我理解为什么这个闭包属性会导致强引用周期,我知道如何解决它.而且我不打算这么说.

让我困惑的是以下代码:

var heading: HTMLElement? = HTMLElement(name: "h1")
let defaultText = "some default text"
heading!.asHTML = {
    // confusing, this closure are …
Run Code Online (Sandbox Code Playgroud)

objective-c ios swift

10
推荐指数
2
解决办法
556
查看次数

如何理解 Swift 中的引用类型或“指针”?

指针

如果您有使用 C、C++ 或 Objective-C 的经验,您可能知道这些语言使用指针来引用内存中的地址。引用某种引用类型实例的 Swift 常量或变量类似于 C 中的指针,但不是指向内存中地址的直接指针,并且不需要您写星号 (*) 来表示您正在创建一个参考。相反,这些引用的定义与 Swift 中的任何其他常量或变量一样。

是 Apple 文档中“指针”的解释。我们都知道,在C++或Objective-c中,指针直接指向内存中的地址。但是在 Swift 中,Apple 说它A Swift constant or variable that refers to an instance of some reference type is similar to a pointer in C, but is not a direct pointer to an address in memory,让我很困惑。我的问题是引用类型背后的场景是什么,如果它不是指向内存中地址的直接指针,它指向哪里?

任何提示或线索将不胜感激。

swift

6
推荐指数
1
解决办法
496
查看次数

标签 统计

swift ×2

ios ×1

objective-c ×1