- protocol
다수위 클래스들이 공통으로 사용할 수 있는 매서드를 묶어 클래스에 적용하는 것을 말한다.
protocol을 선언하기 위해서는 키워드 'protocol'을 사용한다.
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}
classes, enumerations, stucts는 protocol을 모두 적용할 수 있다.
class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A simple structure"
mutating func adjust() {
simpleDescription += " (adjusted)"
}
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription
구조체를 수정하는 매서드를 표시하는 simpleStructure의 선언에서 키워드 'mutating'의
사용에 유의하라. simpleClass의 선언에서 Class는 항상 매서드가 Class 내부를 수정할 수 있기에
키워드 'mutating'으로 표시된 매서드가 필요없다.
- extension
기존 형식에 새로운 기능(매서드나 계산된 속성)을 추가하기 위해서는 키워드 'extension'을 사용한다.
extension은 다른곳에서 선언된 형식에 protocol 준수를 추가하기 위해 심지어 라이브러리나 프레임워크에서
가져온 타입에도 사용할 수 있다.
extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}
7.simpleDescription
'Smart Device > Swift' 카테고리의 다른 글
Swift 함수 #6 외부 파라미터 명(External Parameter Names) 사용 (0) | 2015.06.02 |
---|---|
Swift Generics (0) | 2014.07.03 |
Swift struct (2) | 2014.07.02 |
Swift Enumerations (0) | 2014.06.29 |
Swift Objects and Classes #3 (0) | 2014.06.29 |