从 autoreleasepool 到 return 对象的正确方法

Proper way to return object from autoreleasepool

我正在尝试将我们的一些代码包装在 autoreleasepool 中。但是我偶然发现了一种方法,它 return 是一个值。我打算将所有内容包装在 autoreleasepool 中,但我怎么能 return 价值呢?我有这个代码:

func get(withId id: String) -> Student? {
    return autoreleasepool { () -> Student? in
        let realm = try! Realm()
        let results = realm.objects(Student.self).filter("id = %s", id)
        return results.first
    }
}

return 这个值合适吗?我在互联网上找到的大多数示例都没有 return 来自 autoreleasepool 块的值。

是的,因为Swift3,你可以return函数中的一个值传给autoreleasepool,它会是整个return的值autoreleasepool 打电话,就像你展示的那样。