Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

개발자의 삽질

[Swift] Swift에서는 어떻게 Optional Protocol을 만들까? 본문

Swift

[Swift] Swift에서는 어떻게 Optional Protocol을 만들까?

uniqueimaginate 2022. 2. 13. 23:28

https://stackoverflow.com/questions/24032754/how-to-define-optional-methods-in-swift-protocol

 

How to define optional methods in Swift protocol?

Is it possible in Swift? If not then is there a workaround to do it?

stackoverflow.com


Swift 에서는 어떻게 Optional Protocol 을 만들까?

Objective-C 에서는 매우 간단하게 Optional Protocol을 만들 수 있다.

애초에 언어에서 지원을 하기 때문이다.

예를 한번 들어보자

@protocol ProtocolWithOptional

- (void) returnVoidFunction;
- (NSString *) returnStringFunction;

@optional
- (NSInteger) returnIntegerFunction;

@end

위에서 returnVoidFunction, returnStringFunction 은 프로토콜을 채택한 클래스, 구조체에서 반드시 구현해야 하는 함수이다.

그러나 returnIntergerFunction은 구현해도 되고 안해줘도 된다.

그럼 위의 프로토콜을 Swift로 만들어보자

import UIKit

protocol ProtocolWithOptional {
    // Required Function
    func returnVoidFunction()
    func returnStringFunction() -> String


    // Optional Function
    func returnIntegerFunction() -> Int
}

extension ProtocolWithOptional {
    // 익스텐션을 통해 Optional Function에 미리 기본값을 반환하게끔 한다.
    func returnIntegerFunction() -> Int{
        return 0
    }
}

struct HaveOptionalProtocol: ProtocolWithOptional {
    func returnVoidFunction() {}

    func returnStringFunction() -> String {
        return "String"
    }
}

위의 코드와 같이 Extension을 통해 Optional로 만들고 싶은 함수를 기본값으로 반환하게 한다.

Comments