【发布时间】:2019-04-08 02:31:29
【问题描述】:
我正在使用代码创建我的项目,这有点令人困惑且难以阅读,因为我的代码中有几行只是为了设置 UIElements...
所以我尝试将这个庞大的部分插入到扩展中,并得到一个错误说存储的属性不能进入扩展,之后我的解决方案如下......
weak var centraliseButton: UIButton!
weak var infoButton: UIButton!
weak var seeFireButton: UIButton!
weak var locatManager: CLLocationManager!
weak var mapkitView: MKMapView!
weak var containerViewForInfoButton: UIView!
weak var containerViewForSeeFireButton: UIView!
然后我在扩展文件中的一个函数中设置了evertyhing,并在viewDidLoad() 中调用了这个函数,但是我再次遇到大量运行时错误和空值,因为我在其中一些属性中访问了self,它们是lazy var之前,所以我的最后一个解决方案如下:
lazy var centraliseButton: UIButton = UIButton()
lazy var infoButton: UIButton = UIButton()
lazy var seeFireButton: UIButton = UIButton()
lazy var locatManager: CLLocationManager = CLLocationManager()
lazy var mapkitView: MKMapView = MKMapView()
lazy var containerViewForInfoButton: UIView = UIView()
lazy var containerViewForSeeFireButton: UIView = UIView()
并在扩展中设置函数内的所有内容,它工作我没有错误,但它看起来对我来说是一个糟糕的解决方案,我不得不用“虚拟”值初始化它们,因为惰性 var 需要立即初始化所以……
这是一种不好的做法吗? 有没有更好的方法来做到这一点?
提前感谢您的回答!
【问题讨论】:
-
他们为什么需要偷懒?
标签: swift xcode extension-methods