찾다

 >  Q&A  >  본문

objective-c - iOS中的delegate的原理是怎么回事?

如题,以前是个c#新手,在c#里也经常用委托,回来熟了lambda后都是直接写个lambda过去。当时没觉着二者区别多大。
但现在搞iOS有点晕了,怎么这里block和delegate是不同的东西?然后再看看委托的使用上怎么又觉着这不是和使用传统意义上的接口然后多态一个意思嘛?只是delegate有optional和request而已啊。
哎呦不对,我在写这个问题的时候突然感觉好像委托就是我所说的这个原理?求大神给解惑……

PHP中文网PHP中文网2765일 전464

모든 응답(1)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-25 09:05:21

    objc의 대리자는 C#의 대리자와 동일한 개념이 아닙니다. obj c의 대리자는 일반적으로 프로토콜(다른 언어에서는 인터페이스, objc에서는 프로토콜이라고 함)인 디자인 패턴의 위임 모드이며 선택 사항이며 필수입니다. ( "요청"(철자가 틀렸음)이라는 단어는 프로토콜을 구현할 때 특정 메서드나 변수가 필수인지 선택 사항인지를 의미하는 것 같습니다. 예를 들어, 테이블 뷰 자체는 표시할 행 수나 표시할 내용을 알지 못합니다. 표시해야 할 때 대리자(UITableViewDelegate/UITableViewDatasource를 따르는 객체의 또 다른 약한 참조)를 묻습니다. 몇 줄까지 표시하고 싶은데요? 각 행의 높이는 얼마입니까? 뭔가를 보여주시겠어요? 클래스가 UITableViewDelegate를 준수하는 경우 일부 메서드는 구현되어야 하며(필수) 일부 메서드는 선택 사항(선택 사항)입니다. 단지 objc와 C#에서 무거운 키워드를 사용한다고 생각하면 되지만 의미는 다릅니다.

    회신하다
    0
  • 취소회신하다