Swift4.0 日常用法記錄

  1. 屬性的settergetter, 因為不能用self.了,所以需引入一個中間變量來實現(xiàn)。
/// swift setter getter只能通過一個中間變量來實現(xiàn)。
    var  _titleStr:String?
    var titleStr:String? {
        get{
            return _titleStr
        }
        set(newValue){
            _titleStr = newValue
        }
    }

其使用如下:

        titleStr = "來啦啊"   // set
        print(titleStr)      // get
  1. selector使用:需要符號#,方法名在selector后面的括號中, 方法實現(xiàn)前面要加@objc
// 通過selector調(diào)用方法
setRightItemText(itemText: "設(shè)置", action: #selector(toSetting))
// 方法實現(xiàn)前面需要加@objc
 @objc func toSetting() -> Void
    {
        print("設(shè)置")
    }
  1. 對象方法需要func申明開頭,方法中的參數(shù)需要寫在括號中,且是先寫參數(shù)名,再接參數(shù)類型,函數(shù)返回值類型寫在最后
func subText(str:String) -> Void {
        text = str
        font = UIFont.subTextFont()
        textColor = UIColor.subUITextColor()
    }
  1. 如果是類方法則需要加func前面加class
class func grb(r:CGFloat, g:CGFloat, b: CGFloat) ->UIColor{
        return UIColor.rgba(r: r, g: g, b: b, a: 1.0)
    }
  1. swift分類寫法,使用extension關(guān)鍵字
// 給UIColor添加一個分類
extension UIColor{
}
  1. 分類中的如果添加構(gòu)造方法必須是在父類中有這個方法,但是參數(shù)可以不一樣,且該構(gòu)造方法必須使用convenience修飾, 并以self.init明確的去調(diào)用父類方法,而不是super。
convenience init(r:UInt32 ,g:UInt32 , b:UInt32 , a:CGFloat = 1.0) {
        self.init(red: CGFloat(r) / 255.0,
                  green: CGFloat(g) / 255.0,
                  blue: CGFloat(b) / 255.0,
                  alpha: a)
    } 
  1. 子類中調(diào)用父類構(gòu)造函數(shù)時,前面需要加上override,并同時加上
    required init?(coder aDecoder: NSCoder)
    ; 如果只是調(diào)用父類的一般方法,則只需要在方法名前加override。
override init(frame: CGRect) {
        super.init(frame: frame)
        
        configUI()
        
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
  1. 創(chuàng)建子類和OC基本一樣。
import UIKit

class BaseView: UIView {

}
  1. 代理直接寫在父類的后面, 代理方法實現(xiàn)是直接調(diào)用
// 遵循代理
class ProfileViewController: BaseViewController, UITableViewDelegate, UITableViewDataSource {

}
// 實現(xiàn)代理方法
func numberOfSections(in tableView: UITableView) -> Int {
        return 6
    }
  1. 懶加載, 有點類似閉包的寫法,注意最后的()。
lazy var msgArr: Array = {
        return [["百萬現(xiàn)金天天領(lǐng)!","","完成任務(wù),抽取大獎"],["","","收藏,移到這里了"],["賣舊手機,馬上收錢","每天一萬步,與健康更親近!","5G流量、限量領(lǐng)"],[""],[""]]
    }()
  1. 枚舉值使用,需要先寫出枚舉值類型。
let weiboBut:UIButton = UIButton.init(type: UIButtonType.custom)
  1. _的用法,在swift的函數(shù)中參數(shù)名既是函數(shù)內(nèi)部的參數(shù)名,也是外部調(diào)用函數(shù)時的參數(shù)名。 如果給參數(shù)前面加個_,表示調(diào)用時可以忽略參數(shù)名。
    // 申明2個函數(shù),第二個函數(shù)的參數(shù)加了 _
    func aTest(name:String, password:String) -> Void
    {
         print(name + password);
    }
    
    func haveAtry(name:String, _ password:String) -> Void
    {
        print(name + password);
    }

調(diào)用時可以看到,加了_的參數(shù)名可以省略不寫。


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容