본문 바로가기

교육/Swift

[swift] protocol

1. protocol

objc와 같이 대표적으로 쓰는것이 delegate

다른 객체에게 특정 시점을 알려줄 수 있다.


2. 샘플코드

// protocol

protocol TestProtocol

{

    // 규칙 1. 메소드는 선언만

    func description() -> String

    

    // 규칙 2. 저장속성은 넣을 없지만, 계산 속성은 가능

    // get/set 반드시 표기

    var name : String{get set}

    

    // 규칙 3. 연관 타입도 넣을 있다.

    //    associatedtype valueType;

}


class Test : TestProtocol // , TestProtocol2

{

    func description() -> String {

        return "AA"

    }

    var name : String{

        get{

            return "A"

        }

        set{

            

        }

    }

    typealias valueType = Int;

}

var t = Test()

// 특정 프로토콜을 구현한 객체만 받는 함수

func foo(tp : TestProtocol)

    //func foo(tp : protocol<TestProtocol, TestProtocol2>) // 2 이상의 프로토콜 받을

{

    

}

foo(t)


// 스위프트가 제공하는 프로토콜 사용하기

class Point : CustomStringConvertible

{

    var x : Int = 0

    var y : Int = 0

    /*

     func description() -> String {

     return "\(x), \(y)"

     }

     */

    var description: String { get{ // CustomStringConvertible 정의 되어 있음

        return "\(x), \(y)"

        }

    }

}

var p = Point()

print(10) //  프로젝트이름.Point

print(p)

'교육 > Swift' 카테고리의 다른 글

[swift] generic  (0) 2016.08.08
[swift] operator overloading  (0) 2016.08.08
[swift] casting  (0) 2016.08.08
[swift] extension  (0) 2016.08.08
[swift] subscript  (0) 2016.08.08