在协议扩展中读取变量时,xcode调试器会提供错误的访问权限

时间:2016-10-14 17:21:40

标签: xcode debugging swift2

我在一个真实的项目中注意到了这个问题,然后在这个简单的应用程序中重现了它,该应用程序只有一个没有任何作用的tableView视图控制器。

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var tableView: UITableView!
}

protocol Proto : class {
    weak var tableView : UITableView! { get }
}

extension Proto {
    func omg () {
        print("tableView : \(self.tableView)")
    }
}

class ViewControllerExtended : ViewController, Proto {
    override func viewDidLoad() {
        super.viewDidLoad()
        omg()
    }
}

如果您运行此应用程序,该应用程序将正常运行,您将看到

的内容
tableView : <UITableView: 0x7fc5b702ea00; frame = (144 148; 240 128); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7fc5b5e0be60>; layer = <CALayer: 0x7fc5b5d0f800>; contentOffset: {0, 0}; contentSize: {240, 0}>

在控制台中。但是,如果在打印行上添加断点,并且在调试器中尝试打印tableview的值,则会出现错误的访问错误

debugger issue

没有充分利用调试器并不是世界末日,但我确实希望在协议扩展中实现大量逻辑,因此不要理想它。

0 个答案:

没有答案