关于自学swift的一些心得(一)

2019-01-19  本文已影响5人  木子冰洛

一,关于?和!

?就是可能为空, !就是确定肯定有值

二,关于写block,swift里面叫闭包

(name:String,compate:@escaping(_success:Bool,_reslut:String?,_model :LSJUserInfoModel?) -> ()

1,以上包括关键字: @escaping后面跟着的参数前面需要加下划线 _ ,不然会报错, 参数类型后面的?代表这个参数可能为nil, 如果没有?则表示此参数肯定有值, 如果你包了一个nil就会报错

2,闭包写的地方跟参数是一起的, 用逗号隔开

3,对于调用闭包时候, success: { (res:Data)in 尽量把参数的类型都写好, 不要省略, 省略看着代码是简洁了, 但是可读性很差, 到时候你根本不知道这个参数类型是啥, 还得翻回去看

反正用闭包就是, 尽量不要随便省略, 搞得高大上的很. 如果省略了, 真出BUG回过头来检查的时候, 你就等着GG吧

三,对于NSString和String, NSDictionary和Dictionary

建议不到实在不行时候, 你才用NS系列的类型, 建议直接用没有NS的来写swift, 当成一个新语言来解决. 不然代码经常出现要as的时候, 很烦

四,对于UIButton的addTarget方法

Button.addTarget(self, action:#selector(clickUpdateButton(sender:)), for:UIControl.Event.touchUpInside)

1,这里很坑的是#selector 不能自动联想的写出来, 你得背下这个单词

2,UIControl.Event.touchUpInside不建议写成.touchUpInside, 省略是很高大上, 但是代码可读性差. 此处针对所有其他的枚举. 毕竟这个你常用的省略了你还看得懂, 其他不常用的省略你, 你知道是啥?

3,clickUpdateButton(sender:)对于这个方法, 你在写的时候 要加上@objc func 在前面, 不然会报错

五,对于全局属性

建议全局的let或var出来的属性, 前面都加上self.  这样增加代码可读性, 明确知道属性来自哪里.

1, 在使用Masonry来代码设置约束时候如果不写self.就会报错

self.mobileTextField.mas_makeConstraints { (make:MASConstraintMaker!) in

            make.centerX.equalTo()

            make.top.equalTo()(self.iconView.mas_bottom)

            make.height.equalTo()(55)

            make.width.equalTo()(260)

        }

2, 对于Masonry使用时候, (make:MASConstraintMaker!)  的!必须要有,不然会报错

六,对于代理的实现

extension LSJTabBarController : LSJTabbarViewDelegate {

    func tabClickItem(index:Int) {

        self.selectedIndex= index

    }

}

这里比较爽, 直接开分类来继承代理协议, 与自己的方法分开, 看着非常舒适

七,对于怎么写单例

这里写单例很简单, 没有OC那么麻烦的逻辑

class LSJUserInfo {

    static let shareUserInfo = LSJUserInfo()

    private init(){}

1,这个简单的方法, 首先这个类不能继承于NSObject

2, 需要吧init()来弄成私有,

3, 抛出一个单例创建方法就可以了

上一篇下一篇

猜你喜欢

热点阅读