2009-07-15 6 views
1

이 튜토리얼 Your First iPhone Application을 살펴보고 훌륭하게 작동했습니다. 내 질문은 다음과 같이 읽는 자습서의 줄에 대한 것입니다.UITextFieldDelegate UIVewController 용 프로토콜

또한보기 컨트롤러는 텍스트 필드의 대리자가 될 것입니다. 따라서 UITextFieldDelegate 프로토콜을 채택해야합니다. 클래스가 프로토콜을 채택하도록 지정하려면 인터페이스에서 클래스가 상속하는 클래스 이름 뒤에 꺽쇠 괄호 (<>)로 프로토콜 이름을 추가하십시오.

프로토콜을보기 컨트롤러에서 제거하면 메서드가 여전히 호출되어 (메시지 수신) 키보드가 닫힙니다. 나는 UITextFieldDelegate 프로토콜의 모든 메소드가 선택 사항임을 알아 차렸다. 그렇다면 뷰 컨트롤러가 프로토콜을 준수한다고 선언하는 이유는 무엇입니까? 내가 뭘 놓치고 있니? :-)

답변

5

프로그래머들은 일들을 정리하기를 좋아하기 때문에. 프로토콜의 모든 메서드가 선택적이라 할지라도 클래스가 대리자로 사용될 경우 해당 프로토콜을 구현한다는 것을 공식적으로 선언하는 것은 여전히 ​​좋은 형식입니다. 위임 클래스는 클래스가 프로토콜을 구현하도록 요구할 수도 있습니다. 즉, 메소드를 구현하지만 프로토콜을 구현한다고 선언하지 않으면 컴파일 경고가 발생합니다.

+0

UITextField를 View Controller에 연결했지만 View Control이 UITextFieldDelegate 프로토콜을 따르고 있다고 선언하지 않은 상황을 볼 수있는 컴파일러 스위치 또는 지시문이 있습니까? –

+0

"LLVM 4.2 - 경고에서 경고를"오류로 처리 "가"예 "로 설정되어 있는지 확인하십시오. LLVM Apple Compiler 3.x를 사용하는 경우 유사한 위치에있을 가능성이 높음 – jcpennypincher