我正在尝试一个简单的例子,如下所示:https: //developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20 -XID_88
这是我的代码.(忽略其他可能的代码,这是一个空项目,此代码写在空的UIViewcontroller viewDidLoad中)
dispatch_async(dispatch_get_main_queue()) {
[unowned self] in
println(self)
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么当我运行专业版时它会崩溃
- 线程#1:tid = 0x1a796,0x00284d18 libswiftCore.dylib`_swift_release_slow + 8,queue ='com.apple.main-thread',stop reason = EXC_BAD_ACCESS(code = 1,address = 0x458bc681)
在最新的测试版(5)上有什么变化,这是不再支持的吗?谢谢
编辑:有趣的是这段代码适用于Objc
__weak MyViewController *weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@", weakSelf);
});
Run Code Online (Sandbox Code Playgroud)
edit2:关于这个链接的解释:我们总是在Swift中使用[无主自我]内部关闭弱和无主的区别是错误的.
这不仅仅是弱小的nils而且是无主的.如果是这种情况,这也应该崩溃:
dispatch_async(dispatch_get_main_queue()) {
[weak self] in
println(self)
}
Run Code Online (Sandbox Code Playgroud)
但它没有,它打印指针,所以,它不是零.