스위프트 계승에 대한 간단한 정리.

8631 단어 Xcode6SwiftiOS8

프로토콜 이니셜 및 클래스 이니셜


지난번과 마찬가지로 반MySuper에 자신의 이니셜을 추가했다.protocol에서 선언한 초기 기록기init(srt)는 수식자required가 필요하다.
MySuper.swift
import Foundation

class MySuper:MyProtocol{
    //プロトコルに宣言したinit(str)
    required init(str: String) {
        NSLog("MySuperクラスのrequired init(%@)", str)
    }
    //デフォルトのイニシャライザinit()
    init()
    {
        NSLog("MySuperクラスのデフォルトinit()")
    }

    func protocolFunction01() {
        NSLog("MySuperクラスのFunction01")
    }

    func protocolFunction02() {
        NSLog("MySuperクラスのFunction02")
    }
}
거기서 아이급MyParent을 더 만든다.
별말씀이지만 다음과 같은 오류가 발생할 수 있습니다.Overriding declaration requires an 'override' keyword
보아하니 override 수식부적이 필요할 것 같다.
따라서 override 수식자를 적당히 첨가한다.
MyParent.swift
import Foundation

class MyParent: MySuper{
    required init(str: String)
    {
        super.init(str: str)
        NSLog("MyParentクラスのrequired init(%@)", str)
    }

    override init()
    {
        super.init()
        NSLog("MyParentクラスのoverride init()")
    }
}

클래스 인스턴스화


이제 드디어ViewController, 실례화MyParent류.
ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        var myParent:MyParent = MyParent()

    }
}
콘솔의 결과는 예상과 같다.

참고로 String를 매개 변수init(str)로 초기화한 상황입니다.
ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        var myParent:MyParent = MyParent(str: "ほげほげ")

    }
}

콘솔 결과는 2단계입니다.
그리고 자류MyChild를 한층 더 만들어 보려고 한다.
MyChild.swift
import Foundation

class MyChild: MyParent{
    required init(str: String)
    {
        super.init(str: str)
        NSLog("MyChildクラスのrequired init(%@)", str)
    }

    override init()
    {
        super.init()
        NSLog("MyChildクラスのoverride init()")
    }
}
ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //var myParent:MyParent = MyParent(str: "ほげほげ")
        var myChild:MyChild = MyChild(str: "ふがふが")

    }
}
콘솔의 결과는 세 단락이 고르지 않다.

여기까지 예상대로w

좋은 웹페이지 즐겨찾기