[iOS프로그래밍] Protocol ?


iOS/아이폰 프로그래밍 2012.05.06 13:09



iOS 에서의 Protocol 은 어떤 의미를 가질까. 버젓이 Xcode  상에 Protocol 이라는 명칭으로 나온다. 흠...


 Network 상에서 Protocol 의 의미는 서로 다른 환경에서 "어떤 것"을 하기 위한 "약속"(통역)으로 의미를 하는데.... Objective-C 에서의 Protocol은 어떤 의미를 가질까... 조금 자세히 들여다보자. 



 Objective -C 에서의 프로토콜을 간단하게 설명한 글이다 


 - Java 의 인터페이스 개념과 비슷하다. 


 자바에서는 클래스를 생성해놓고 인터페이스를 만들어서 다른 클래스에서 사용할 때 편리하게 하나의 메소드를 구현해놓고 사용이 가능하다!. 


 - 여러 클래스에서 공통적으로 사용하는 메소드를 정의하는 수단이다. 

 - 프로토콜에서 요구하는 메소드를 구현할 경우 이를 "따른다" 혹은 "받아들인다"라고 표현한다. 

 - 구현하고자 하는 프로토콜을 <> 을 통해 구현한다. ?

 - 두 개 이상의 프로토콜을 따를 경우에는 컴마(,) 로 구분한다. 

 - 공식 프로토콜과 비공식 프로토콜로 구분짓는다. 


 공식 프로토콜이란. 특정클래스에서 반드시 구현해야 하는 메소드의 집합이다. 

조금 더 설명을 붙이자면, 

프로토콜은 추상화클래스와 같다. 

C++에서의 추상화클래스와 같은 의미를 가지며, (굳이 따지자면) 객체와 객체간의 통신을 위해 사용되는 선언부라고 설명할 수 있겠다. 

구체적으로 프로토콜은 클래스에서 메서드에 접근하기 위한 접근자를 선언하듯 사용이 되며,


 어렵게 생각할 필요 없이 
@Protocol View1Delegate 

{

 - (void) onInputText: (NSString*)txt;

}

라고 적어준다면, 다른 클래스에서 View1의 onInputText 메서드를 접근해서 사용할 수 있다.  다른클래스를 View2 라고 가정할 때 View 1과 View 2 가 서로(클래스)간에 자신이 하는 작업을 알리고 그것에 대해 이벤트 처리를 하기 위해서 필요하다! 

저번 시간에 했던 Appdelegate도 Protocol의 일부이며(Appdelegate에서 어떤 윈도우가 꺼지든, 프로그램이 종료되든 다른 지점에서 무언가가 실행되면 다른 클래스들과 통신하여 메서드를 실행하니까!) 이러한 Protocol 은 이름이 달라도 모든 객체지향 프로그래밍에서 상ㅇ이 되며 Objective-C 는 @Protocol 로 선언하여 사용을 한다. 


(Refrence : http://sichans.blog.me/20127523386 ) 










저작자 표시 비영리 변경 금지
신고

WRITTEN BY
ShakeJ

0 ,