Publié le

ios delegate 예제

다른 클래스에게 작업을 수행하도록 요청할 때 작업을 수행하기 위해 호출되는 클래스의 개체를 유지해야 합니다. 이 작업은 아래와 같이 대리자 속성의 도움으로 수행됩니다. 단계 6: 마지막으로, ClassAVC에서 pragma 단계 6을 찾아 프로토콜의 기능을 사용 하자, func 변경 입력 시작BackgroundColor 그리고 당신은 당신을 위해 그것을 자동 완료 하는 것을 볼 것 이다. 이 예제에서는 배경 색을 변경하고 이 기능을 추가하여 구현을 추가할 수 있습니다. 프로토콜을 정의해야 합니다. 위임 “디자인 패턴은 위임된 책임을 캡슐화하는 프로토콜을 정의하여 구현되며, 준수 형식(대리자라고 함)이 위임된 기능을 제공하도록 보장됩니다.” 강조 추가). 이것은 로고다운더위임 프로토콜입니다. (이미지) 파일을 다운로드 할 수있는 위임 객체, LogoDownloader에 대한 코드를 살펴 보자. 로고다운로드클래스 인스턴스가 대리자 없이 작동할 수 있도록 대리자 개체(LogoDownloaderDelegateDelegate 형식)에 대한 선택적 참조를 유지합니다. 대리자 멤버 변수가 전무인 경우 LogoDownloader는 여전히 파일을 다운로드하고 자체 didDownloadImage() 메서드를 호출합니다. 대리자 선언을 약한 것으로 표시한 경우 “`약함`은 `LogoDownloaderDelegate`가 아닌 클래스 및 클래스 바인딩 프로토콜 유형에만 적용될 수 있습니다.” 오류 메시지가 표시되었을 것입니다.

didSelectItemAt 메서드를 구현 하 여, 뷰 컨트롤러 UICollectionViewCell 개체에 탭의 통보를 가져옵니다. 셀을 탭하면 didSelectItemAt의 ViewController 구현이 호출됩니다. 예를 들어 셀을 탭할 때 셀을 시각적으로 강조 표시하고 일부 응용 프로그램별 논리를 수행할 수 있도록 didSelectItemAt 메서드의 본문을 정의할 수 있습니다. collectionView는 UICollectionViewCell 개체에서 탭을 처리하는 책임을 ViewController에 위임했습니다. 위임은 다른 클래스에 작업/작업을 할당하고 작업이 완료되면 결과를 얻는 프로세스입니다. 간단한 예는 다음과 같습니다. 다음은 위임 및 UICollectionViewDelegate(클릭 링크)의 예입니다. 위의 변경 사항을 적용하면 이제 대리자 프로토콜에서 shouldImportFile 메서드를 제거할 수 있으므로 상태 변경과 관련된 메서드만 남게 됩니다. 대리자 함수 preferredCookieSize()를 사용하면 반환 값으로 베이커리 개체에 데이터를 다시 제공할 수 있기 때문입니다. 더 나은 설명을 위해 간단한 응용 프로그램에서 Swift를 사용하여 클래스 간에 데이터를 전달하는 사용자 지정 대리자를 만드는 방법을 보여 드리고이 시작 프로젝트를 다운로드하거나 복제하여 실행하고 실행합니다. UITextViewDelegate 프로토콜에 따라 텍스트 보기에서 일어나는 이벤트에 응답하기 위해 여러 대리자 함수를 구현할 수 있습니다.

이러한 함수 중 일부는 다음과 같습니다: 여기서는 클래스에 대한 대리자 속성을 만들고 이 속성은 프로토콜 형식을 채택해야 하며 선택 사항이어야 합니다. 또한 주기 및 잠재적인 메모리 누수 유지를 방지 하려면 속성 앞에 약한 키워드를 추가 해야 합니다., 만약 당신이 그 의미는 지금 걱정 하지 마세요, 그냥이 키워드를 추가 하는 것을 기억. 나머지 대리자 메서드도 클로저로 계속 변환하고 싶다고 가정해 보겠습니다. 이렇게 하는 한 가지 방법은 단순히 초기화자 인수 또는 변경 가능한 속성으로 클로저를 계속 추가하는 것입니다.