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 |