Protocol


말 그대로 규약. 사실상 자바의 인터페이스처럼 쓰이는 것 같다. 사용법도 비슷하고..




프로토콜 구현 및 클래스에 적용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
s//
//  CMessage.swift
//  testSwift
//
//  Created by Eteris on 2018. 4. 20..
//  Copyright © 2018년 Eteris. All rights reserved.
//
 
import Foundation
 
class CMessage : SendMessageProtocol
{
    var messageTitle : String;
    var messageData : String;
    
    init (title : String, data : String, sendTime : String)
    {
        messageTitle = title;
        messageData = data;
        messageSendTime = sendTime;
    }
    
    // protocol 구현
    var messageSendTime : String;
    func sendMessage(title: String, data: String, time: String) {
//        NSLog("sendMessage title : %@ / data : %@ / time : %@", messageTitle, messageData, messageSendTime);
    }
    func sendMessage() {
        NSLog("sendMessage title : %@ / data : %@ / time : %@", messageTitle, messageData, messageSendTime);
    }
}
 
// 프로토콜 선언
protocol SendMessageProtocol
{
    var messageSendTime : String { get set };
    
    func sendMessage (title : String, data : String, time : String);
    func sendMessage ();
}
 
cs


CMessage 클래스가 SendMessageProtocol 규약을 지키도록 적용되었다.


23라인 이하로 SendMessageProtocol로 정해진 규약을 구현한 것을 볼 수 있다.


단 하나라도 구현을 하지 않으면 에러가 난다. 인터페이스랑 역시 같은 부분.


1
2
3
// Protocol
        let testMessage : CMessage = CMessage.init(title: "MTITLE", data: "MDATA", sendTime: "MSENDTIME");
        testMessage.sendMessage();
cs


사용부분.

'Developer > Swift' 카테고리의 다른 글

Extention  (0) 2018.04.20
Swift 각종 용어 정리 (지속 업데이트 필요)  (0) 2018.04.20
Protocol  (0) 2018.04.20
지정 생성자 (Initializer), 편의 생성자 (Convenience Initializer)  (0) 2018.04.13
서브스크립트 (subscript)  (0) 2018.04.11
클로저 (Closure)  (0) 2018.04.09

이 글을 공유하기


댓글(0)

Designed by CMSFactory.NET