類和對象的方法與屬性---懶載入與私人事件---單例與私人化建構函式,私人化建構函式

來源:互聯網
上載者:User

類和對象的方法與屬性---懶載入與私人事件---單例與私人化建構函式,私人化建構函式
對象屬性:

1、private修飾的屬性:只能在本類內部訪問,分類和外部都不能訪問(徹底私人)

2、fileprivate修飾的屬性:在本類和分類中可以訪問,外部不能訪問(部分私人)

3、直接用let或var修飾的屬性:在本類、分類和外部都可以訪問(開放)

4、在分類中只能聲明計算屬性,不能聲明儲存屬性

1     // 屬性:可以被外界訪問2     var name:String?3     4     // private修飾的屬性:只能在本類內部訪問,分類和外部都不能訪問5     private var age:String?6     7     // fileprivate修飾的屬性:在本類和分類中可以訪問,外部不能訪問8     fileprivate var gender:String?
 1 import UIKit 2  3 class Person: NSObject { 4      5 } 6  7 extension Person{ 8      9     // 分類中只能聲明計算屬性,不能聲明儲存屬性10     var desc:String{11         return "我是小明"12     }13 }
類屬性:

1、在本類中使用class修飾的屬性,調用時《類名.屬性名稱》

2、在分類中使用static修飾的屬性(注意:分類中只能定義計算屬性,不能定義儲存屬性),調用時《類名.屬性名稱》

1     // class修飾本類屬性:通過《類名.屬性名稱》進行訪問2     class var classAttribute:String{3         return "I'm the classAttribute."4     }5     6     // static修飾分類中計算屬性:通過《類名.屬性名稱》進行訪問7     static var staticAttribute:String{8         return "I'm the staticAttribute."9     }
對象方法:

1、直接用func修飾,本類、分類、外界都可以調用(開放)

2、用private修飾,只有在本類中可以調用(徹底私人)

3、用fileprivate修飾,在本類、分類中可以訪問,外部不能訪問(部分私人)

 1     // 直接用func的方法,本類、分類、外界都可以調用 2     func sayHi() -> Void { 3          4     } 5     // 只有在本類中可以調用 6     private func sayHi3(){ 7          8     } 9     // 只有在本類、分類中調用10     fileprivate func sayHi2() -> (){11     12     }
類方法:

1、在本類中使用class修飾類方法

2、在分類中使用static修飾類方法

 1 class Person: NSObject { 2      3     // 在本類中,類方法用class修飾 4     class func sayHi() -> (){ 5         print("Hello world,I'm the class method.") 6     } 7 } 8  9 // extension 相當於OC 中的分類10 extension Person{11     12     // 在分類中,類方法用static修飾13     static func sayHello() -> Void{14         print("Hello world,I'm the static method.")15     }16 }
 懶載入與私人事件:

懶載入的關鍵字用lazy修飾,有三種建立方法

private修飾的事件,要想添加給按鈕,前面必須用@objc修飾

 1 import UIKit 2  3 class Person: NSObject { 4      5     // 懶載入方式一:直接建立 6     private lazy var msgLabel = UILabel() 7      8     // 懶載入方式二:使用對象方法建立,方法名前要加self 9     private lazy var content:String = self.createContent()10     11     // 懶載入方式三:使用閉包建立12     // swift懶載入用lazy修飾,代碼只執行一次,哪怕對象nil了,也不會再次執行13     // OC中的懶載入是重寫get方法,當對象為nil時,會重新載入14     // swift中懶載入使用閉包方式時,閉包可以省略 () in ,直接返回對象即可15     private lazy var button:UIButton = {16         let button = UIButton()17         18         // swift中使用#selector給按鈕添加事件,注意帶參數寫法(btn:)19         // OC中使用@selector給按鈕添加事件20         button.addTarget(self, action: #selector(buttonAction(btn:)), for: .touchUpInside)21         22         return button23     }()24     25     26     // private修飾的事件函數,在Swift運行迴圈裡面找不到27     // 解決方案:使用oc,基於運行時使用kvc動態派發調用該事件,@objc告訴編譯器使用oc的機制去調用這個事件28     @objc private func buttonAction(btn:UIButton){29         30     }31     32     func createContent() -> String{33         return "建立的內容"34     }35 }
單例:用static修飾私人化建構函式,外部不可以通過《類名()》建立對象,只能訪問單例,更嚴謹
 1 import UIKit 2  3 class Person: NSObject { 4      5     // 單例對象,用static修飾 6     static let currentPerson:Person = Person() 7      8     // 使用閉包方式建立單例對象 9     static let sharedPerson:Person = {10         let per = Person()11         return per12     }()13     14     // 私人化建構函式,外界不可以通過《Person()》建立對象,只能訪問單例對象15     private override init() {16         super.init()17     }18 }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.