Это пример кода
func anyMethod() {
// Nothing here
}
var myVariable = ""
autoreleasepool {
anyMethod() // This should show error
print(myVariable) // This should show error
}
он должен показывать ошибку
Для вызова метода anyMethod в замыкании требуется явное 'self'.чтобы сделать семантику захвата явной
Но я могу звонить anyMethod
без себя, мне интересно, почему это не показывает ошибку
Почему это работает без self
?
РЕДАКТИРОВАТЬ
Скопируйте и вставьте этот класс для повторного создания
import Foundation
import UIKit
class AppGlobalManager:NSObject {
var currentUserID:String?
//Please ignore the method content as it is not the question
func appendLog(string:String?) {
print("LOG:",string)
}
func autoRelaseTest() {
autoreleasepool {
appendLog(string: "Any Log") // NO ERROR
}
}
func normalFunctionTest () {
normalFuncWithClosure {
appendLog(string: "Test") //Call to method 'appendLog' in closure requires explicit 'self.' to make capture semantics explicit
}
}
func normalFuncWithClosure (completion:@escaping() -> Void) {
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
completion()
}
}
}