iOS/Swift 상식

프로토콜이란?

HJ39 2023. 2. 21. 18:37

프로토콜 정의

  • protocol은 Swift의 class나 struct의 함수를 정의하는 역할을 한다.
  • swift에서 protocol은 타입으로 작용한다.

예를 들어서 알아보자

 

protocol은 Swift의 class나 struct의 함수를 정의하는 역할을 한다.

protocol Animal{
    func sleep()
}

class Dog: Animal{
    func sleep(){
    	print("dog sleep")
    }
}

protocol에서 Animal의 행동을 정의만 해 놓는다.

protocol 내부 함수를 사용하기 위해서는 class, struct를 생성한 후에 상속을 받아 사용해야 한다.

 

swift에서 protocol은 타입으로 작용한다.

protocol Animal{
    func sleep()
}

class Dog: Animal{
    func sleep(){
    	print("dog sleep")
    }
}

// 매개변수로 Animal을 받는 함수 생성
func doghouse(animal: Animal){
    animal.sleep()
}

let dog = Dog()
doghouse(animal: dog)	//dog sleep 출력

Animal을 매개변수로 받는 함수를 하나 생성한 후 Dog 클래스를 인스턴스로 생성한다.

함수를 호출한 뒤 매개변수로 dog 인스턴스를 넘겨주면 Dog클래스 내부에 sleep() 함수가 실행된다.

 

protocol이 중요한 이유

객체의 유연한 설계를 위해 정의와 구현이 분리되어야 한다.

OCP(Open Closed Principle) 원칙을 지키기 위해 정의와 구현을 분리해야 한다.

{OCP:  확장에는 열려있고 변경에는 닫혀있어야 한다는 원칙}

 

# 참고한 사이트

  1. https://dblog.tech/25