개발자의 삽질
[Swift] Swift에서는 어떻게 Optional Protocol을 만들까? 본문
https://stackoverflow.com/questions/24032754/how-to-define-optional-methods-in-swift-protocol
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
로 만들고 싶은 함수를 기본값으로 반환하게 한다.
'Swift' 카테고리의 다른 글
[Swift] 2차원 배열 만들기 (0) | 2022.02.24 |
---|---|
[Swift] private, private(set), fileprivate, public 에 대해 알아보자 (0) | 2022.02.21 |
[Swift] Attribute - @discardableResult (0) | 2022.02.09 |
[Swift] Initialization - 3편 (Failable Initializers) (0) | 2022.02.02 |
[Swift] Initialization - 2편 (Class Inheritance & Initialization) (0) | 2022.01.27 |
Comments