Arco rápido y bloques
Estoy probando un ejemplo simple como se ve aquí:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-XID_88
Y este es mi código. (Ignore otro código posible, este es un proyecto vacío con este código escrito dentro de un UIViewcontroller viewDidLoad vacío)
dispatch_async(dispatch_get_main_queue()) {
[unowned self] in
println(self)
}
No entiendo por qué se bloquea cuando ejecuto el pro
thread # 1: tid = 0x1a796, 0x00284d18 libswiftCore.dylib`_swift_release_slow + 8, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (código = 1, dirección = 0x458bc681)¿Ha cambiado algo en la última versión beta (5) y esto ya no es compatible? Gracias
editar: Interesante que este código funcione en Objc
__weak MyViewController *weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@", weakSelf);
});
edit2: La explicación en este enlace:¿Siempre usaremos [yo sin propiedad] dentro del cierre en Swift en la diferencia de débiles y sin dueño está mal.
No es solo que los nulos débiles y los no propietarios no lo hagan. Si ese es el caso, esto también debería bloquearse:
dispatch_async(dispatch_get_main_queue()) {
[weak self] in
println(self)
}
pero no lo hace, e imprime el puntero, por lo tanto, no es nulo.