Notice
Recent Posts
Recent Comments
Link
투케이2K
15. (swift/xcode) protocol 프로토콜 인터페이스 정의 및 extension 익스텐션 확장 기능 구현 실시 본문
Swift
15. (swift/xcode) protocol 프로토콜 인터페이스 정의 및 extension 익스텐션 확장 기능 구현 실시
투케이2K 2021. 10. 12. 09:29[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
import UIKit
// [protocol 정의 실시 : 클래스 외부에 선언]
protocol ReadOne {
func read_One()
}
protocol ReadTwo {
func read_Two()
}
class ReadClass : ReadOne , ReadTwo { // 클래스에서 프로토콜 채택
// 메소드 몸체 구현 실시
func read_One() {
print("ReadClass >> read_One")
}
// 메소드 몸체 구현 실시
func read_Two() {
print("ReadClass >> read_Two")
}
}
// [extension 정의 실시 : 클래스 외부에 선언 : 기존 Int 형에 새로운 메소드 추가]
extension Int {
var isEven : Bool { // 짝수 여부 확인
return self % 2 == 0
}
var isOdd : Bool { // 홀수 여부 확인
return self % 2 == 1
}
}
// [protocol 및 extension 정의 실시 : 클래스 외부에 선언]
protocol StringUtil {
func isEqualsTo(_a : String) -> Bool
}
extension String : StringUtil { // protocol 몸체 구현 실시
func isEqualsTo (_a : String) -> Bool{
// 인풋으로 들어온 파라미터 데이터와 타입이 일치하는 경우
if(self == _a){
return true
}
else {
return false
}
}
}
// [뷰 컨트롤러 클래스 부분]
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// [메인 함수 호출 실시]
testMain()
}
/*
[요약 설명]
1. 프로토콜(Protocol)은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진입니다
2. 프로토콜은 기능을 정의하고 제시 할 뿐이지 스스로 기능을 구현하지는 않습니다 (즉, 헤더만 정의)
3. 프로토콜은 구조체, 클래스, 열거형 등에서 사용할 수 있습니다
4. 익스텐션(Extension)은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능입니다
5. 익스텐션은 타입에 새로운기능을 추가할 수 있지만,기존에 존재하는 기능을 재정의할 수는 없습니다(원본 수정 불가)
6. 익스텐션을 통해 추가할 수 있는 기능은 연산 프로퍼티, 메서드, 이니셜라이저, 서브스크립트, 중첩 데이터 타입 등이 있습니다
*/
// [테스트 메인 함수 정의 실시]
func testMain() {
print("[Program Start]")
print("")
// [protocol >> 상속 받은 클래스 호출 실시]
let proClass = ReadClass()
proClass.read_One()
proClass.read_Two()
print("")
// [extension >> Int 형 호출 실시]
let int_even : Int = 2
let int_odd : Int = 3
print("int_even 짝수 여부 : ", int_even.isEven)
print("int_odd 짝수 여부 : ", int_odd.isEven)
print("int_even 홀수 여부 : ", int_even.isOdd)
print("int_odd 홀수 여부 : ", int_odd.isOdd)
print("")
// [protocol 및 extension 정의 호출 실시]
print("a == a 같은지 확인 : ", "a".isEqualsTo(_a: "a"))
print("a == b 같은지 확인 : ", "a".isEqualsTo(_a: "b"))
print("")
}
}
[결과 출력]
[요약 설명]
/*
[요약 설명]
1. 프로토콜(Protocol)은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진입니다
2. 프로토콜은 기능을 정의하고 제시 할 뿐이지 스스로 기능을 구현하지는 않습니다 (즉, 헤더만 정의)
3. 프로토콜은 구조체, 클래스, 열거형 등에서 사용할 수 있습니다
4. 익스텐션(Extension)은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능입니다
5. 익스텐션은 타입에 새로운기능을 추가할 수 있지만,기존에 존재하는 기능을 재정의할 수는 없습니다(원본 수정 불가)
6. 익스텐션을 통해 추가할 수 있는 기능은 연산 프로퍼티, 메서드, 이니셜라이저, 서브스크립트, 중첩 데이터 타입 등이 있습니다
*/
반응형
'Swift' 카테고리의 다른 글
Comments