Swift3.x - 클래스 및 구조체

5887 단어
클래스 소개 및 정의
  • 스위프트도 대상을 향한 일방적인 개발 언어다.
  • 대상을 대상으로 하는 기초는 바로 클래스, 클래스 생성 대상이다.
  • Swift에서 클래스를 정의하는 방법:
  • class 키워드 정의 클래스
  • class   : SuperClass {
          //       
    

    }
    *     :
    *       ,      ,        
    *            ,   NSObject
    
    **        **
    * Swift        :
    *     :          
    *     :             
    *    :         
    *     
      ```
      class person: NSObject{
          //    
          var age = 0
          var name: String?
      }
    
      let child = person()
      child.age = 18
      child.name = "  "
    
      if let name = child.name {
          print("\(name)  \(child.age) ")
      }
      //  :    18 
      ```
    *     
              ,                 ,               ,               ,                           。
    

    class person: NSObject{
      var time = 2
      var startSpeed = 10.0
      var hightSpeed = 20.0
      var endSpeed = 5.0
    
       //  
       var averageSpeed: Double {
           return (startSpeed + hightSpeed + endSpeed) * 0.5
       }
       //   
       func averageSpeedFunction() -> Double {
          return (startSpeed + hightSpeed + endSpeed) * 0.5
      }
    

    }
    let child = person() child.averageSpeedFunction() child.averageSpeed
    *    
                 ,          。     !
    

    class person: NSObject{
      //           
      static var book = 0
    

    }
    person.book = 2//결과: 2
    **      **
    *     
      *        OC       :init  
      *            ,           
      *              ,              
      *      NSObject              
    *          
      *         
      *           ,          ,      ,      。
          ```
          class person: NSObject{
      
              var name: String?
              var height = 0.0
              //         
              //           ,       ,Xcode       ,     ,Xcode    ,          !
              override init(){
                  super.init()
              }
              //       
              init(name: String, height: Double) {
                  self.name = name
                  self.height = height
              }
      
          }
    
          let child = person(name: "  ", height: 1.88)
          child.name
          child.height
          //  :   1.88
          ```
      *             
        ```
          class person: NSObject{
      
          var name: String?
          var height = 0.0
          //         
          override init(){
               super.init()
          }
           //       
          init(name: String, height: Double) {
               self.name = name
               self.height = height
          }
      
          init(dict: [String : AnyObject]) {
                 //       ,           AnyObject?    ,       !
                 //self.name = dict["name"]
                 //self.height = dict["height"]
    
                 //    1:
                 //as?      as?        as?          
                 name = dict["name"] as? String
                 //as!      as!        as!           
                 height = dict["height"] as! Double
                 //                ,           ,     crash
                  
                 //    2:
                 name = dict["name"] as? String
                 //    
                 if let tempHeight = dict["height"] as? Double {
                        height = tempHeight
                 }
           }
          }
          let child = person(dict: ["name":"  " as AnyObject, "height": 1.90 as AnyObject])
        ```
          KVC        
        ```
            class person: NSObject{
      
            var name: String?
            var height = 0.0
            //         
            override init(){
                super.init()
            }
            //       
            init(name: String, height: Double) {
                self.name = name
                self.height = height
            }
            //KVC
            init(dict: [String : AnyObject]) {
                super.init()
                setValuesForKeys(dict)
            }
            //              ->  
            override func setValue(_ value: Any?, forUndefinedKey key: String) {}
        }
        let child = person(dict: ["name":"  " as AnyObject, "height": 1.90 as AnyObject, "weight": 100 as AnyObject])
        child.name
        child.height
        //  :   1.9
        ```
    
    **       **
    *  OC       set          
    * Swift                     
    *             
    *               
      * willSet:            
      * didSet:          
    
      class person: NSObject{
    
      var name: String?{
          willSet{
              print("\(name)")
          }
        
          didSet{
              print("\(name)")
          }
      }
    

    } let child = person() child.name = "샤오밍"
    
    **         **
                :
    *          
    *           
    *                           
    *              
    *               
    *              
    
    * Swift        :
      * struct        
    

    struct 구조체 이름 {//구조체 속성 or 방법}
    
    **      **
                   :
    

    struct SomeStruct {//구조체 속성 or 메서드 var width = 0 var height = 0}//실례화 구조체 var someStruct = SomeStruct()
     Swift ,                  ,    OC    !
    

    import UIKit
    struct SomeStruct {//구조체 속성 or 메서드 var width = 0 var height = 0}
    var someStruct = SomeStruct() someStruct.height = 100 someStruct.height//결과: someStruct.Height 값은 100입니다.
    **         **
              ,          !                   ,                          !
    

    struct SomeStruct {//구조체 속성 or 메서드 var width = 0 var height = 0}
    var someStruct = SomeStruct(width: 66, height: 88) someStruct.height//결과: 88 someStruct.width//결과:66
    **          **
    
    �          (   ),         (    )!
           ,             ,        :
    *                         。
    *                      ,                。
    *               ,      ,      。
    *                          。
    
    ######  :
     Swift    、  、            (OC         )。             。  ,Swift                   。Swift                 ,                   。
    
    Zeb
        :https://github.com/numbbbbb/the-swift-programming-language-in-chinese

    좋은 웹페이지 즐겨찾기