전체 글
-
프로토콜 지향언어, Swift (2)iOS/Swift 2020. 3. 14. 11:34
타입으로서의 프로토콜 프로토콜은 그 자체로는 아무런 기능을 구현하고 있지 못하므로 인스턴스를 만들 수 없을뿐더러 프로토콜만으로 할 수 있는 일도 거의 없다. 하지만 프로토콜은 특별히 기능을 부여하지 않더라도 코드 내에서 자료형으로 사용하기에 부족함이 없는 객체이다. 따라서 때로는 타입으로서 중요한 역할을 하기도 한다. 상수나 변수, 그리고 프로퍼티의 타입으로 사용할 수 있다. 함수, 메소드 또는 초기화 구문에서 매개변수 타입이나 반환 타입으로 프로토콜을 사용할 수 있다. 배열이나 사전, 혹은 다른 컨테이너의 타입으로 사용할 수 있다. 특정 프로토콜을 구현한 구조체나 클래스들이 있을 때, 이들의 인스턴스를 각각의 타입이 아닌 프로토콜 타입으로 정의된 변수나 상수에 할당할 수 있다. 프로토콜 타입으로 정의된..
-
프로토콜지향 언어, Swift (1)iOS/Swift 2020. 3. 7. 04:33
Swift는 프로토콜 지향 언어이다. 프로토콜 지향 방식으로 애플리케이션을 설계하는 것은 객체지향 방식으로 설계하는 것과 상당한 차이가 있다. 프로토콜 지향 설계에서는 클래스 계층 구조로 시작하는 대신 프로토콜로 시작해야 한다. 프로토콜은 클래스나 구조체가 어떤 기준을 만족하거나 또는 특수한 목적을 달성하기 위해 구현해야 하는 메소드와 프로퍼티의 목록이다. (객체지향에서의 인터페이스와 거의 비슷하다.) iOS는 특정 컨트롤에서 발생하는 각종 이벤트를 효율적으로 관리하기 위해 대리자(delegate)를 지정하여 이벤트 처리를 위임하고, 실제로 이벤트가 발생하면 위임된 대리자가 콜백 메소드를 호출해주는 델리게이트 패턴(Delegate Pattern)을 많이 사용하는데, 이 패턴을 구현하기 위해 이용되는 것이..