相关疑难解决方法(0)

Swift ARC和块

我正在尝试一个简单的例子,如下所示: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)

但它没有,它打印指针,所以,它不是零.

ios automatic-ref-counting swift

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

标签 统计

automatic-ref-counting ×1

ios ×1

swift ×1