swift2.0 常用标注 //MARK-: 替换 #pragma mark - #warning
https://blog.csdn.net/lengshengren/article/details/49129043
//snapKit的使用snp.right而不是right
indicatorLabel1.snp.makeConstraints({ (make) in
make.left.equalTo(translatorImageView.snp.right).offset(26)
make.top.equalTo(self.indicatorView).offset(20)
make.right.equalTo(self.indicatorView)
make.height.equalTo(35)
})
不要用 guard —— 作为 if 的相反情况时
作为 if 的相反情况可以理解为作用域内的代码只有在传递进来的条件被判断为 false 的时候才执行
如当我们需要判断一个闭包参数表列中的 error 参数是否有返回值的时候,当 error 为 nil 时我们才有必要执行作用域内的代码,反之 return。
这种情况下用 if 去实现就十分的清晰,可读性更高:
geoCoder.geocodeAddressString(textStr) { (placemarks : [CLPlacemark]?, error : NSError?) in
// 为了编码的安全性考虑,我们对于必要的参数都要进行判断
// 如果有 error 那么就退出
if error != nil {
print("error --- \(error)")
return
}
// 如果有结果,那么看一下结果是否为空,为空退出
guard let placemarks = placemarks else {
return
}
// 遍历所有的坐标(经纬度)
for place in placemarks {
print("wzywzywzy")
}
}
func showNumber(){
//如果为空就return掉
guard let price = price else {
print("exit")
return
}
//不为空就打印
print(price + 100)
}
showNumber()
//写代理
protocol ViewController2Delegate:class {
func textFieldText(string:String)
}
weak var delegate : ViewController2Delegate?
self.delegate?.textFieldText(string: self.tf.text!)
//调用代理
class ViewController: UIViewController,ViewController2Delegate
self.vc2.delegate = self
func textFieldText(string: String) {
self.label.text = string
}
//循环引用:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//VC2 ----- > self
self.vc2.delegate = self
//self ---- > VC2
self.show(self.vc2, sender: nil)
}
HI