iOS Swift 가 프 록 시 프로 토 콜 을 만 드 는 다양한 방식 의 예제

머리말
본 고 는 주로 iOS Swift 가 프 록 시 프로 토 콜 을 만 드 는 여러 가지 방식 을 소개 하고 공 유 를 통 해 참고 학습 을 제공 합 니 다.다음은 더 이상 할 말 이 없 으 니 상세 한 소 개 를 해 보 겠 습 니 다.
만약 LXFView 라 는 클래스 가 있다 면,이 클래스 를 위해 프 록 시 프로 토 콜 을 만 들 려 면 어떻게 해 야 합 니까?
우선,프 록 시 프로 토 콜 의 명명 방식:클래스 이름+Delegatev

protocol LXFViewDelegate {
 func view(_ view: LXFView)
}
우리 가 만 든 프로 토 콜 이 다른 프로 토 콜 을 준수 하 는 상황 에서 이렇게 쓰 는 것 은 잘못 되 지 않 습 니 다.그 다음 에 우 리 는 LXFView 에 프 록 시 속성 을 추가 합 니 다.순환 인용 을 피하 기 위해 프 록 시 속성 은 weak 로 수식 해 야 합 니 다.

class LXFPageView: UIView { 
 weak var delegate: LXFViewDelegate? 
}
이때 바로 잘못 보 고 했 습 니 다.힌트 는 아래 와 같 습 니 다.

'weak' may only be applied to class and class-bound protocol types, not 'LXFViewDelegate'

weak 는 하나의 클래스 나 클래스 바 인 딩 프로 토 콜 의 유형 만 수식 할 수 있다 는 뜻 입 니 다.
알림 처럼 현재 프 록 시 는 클래스 나 클래스 바 인 딩 프로 토 콜 의 유형 이 아 닙 니 다.
현재 우리 의 이 협 의 는 클래스 에 의 해 지 켜 질 수 있 을 뿐만 아니 라 구조 체 와 매 거 에 의 해 지 켜 질 수 있 습 니 다.이것 은 weak 의 요구 에 도달 할 수 없습니다.그러면 어떻게 합 니까?
해결 방법 은 두 가지 가 있다.
방법
프로 토 콜 뒤에[:class]또는[:NSObject Protocol]을 직접 쓰 십시오.

protocol LXFPageViewDelegate: class
//   
protocol LXFPageViewDelegate: NSObjectProtocol

이런 식 으로 는[class]를 추천 하 는 것 보다 경량급 입 니 다.
방법
protocol 앞 에[@obj c]를 추가 하여 obj c 형식의 프로 토 콜 을 표시 합 니 다.

@objc protocol LXFPageViewDelegate
이런 방식 에서 의 장점 은 협의 중의 방법 이 강제 적 으로 실현 되 지 않 는 다 는 것 이다.

총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기