찾다

 >  Q&A  >  본문

Objective-C无私有方法问题

如题,Objective-C无私有方法是什么意思?确实我在.h文件中声明的所有方法除了静态方法就是public方法,但是我再.m文件中随便声明的方法,子类是看不到的,当然performselector还是可以执行的,但是这样算不算是一种私有方法呢?

PHP中文网PHP中文网2806일 전461

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

  • PHPz

    PHPz2017-04-22 09:01:28

    http://blog.sunnyxx.com/2014/04/13/objc_dig_interface/를 살펴보는 것이 좋습니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-22 09:01:28

    obj c에는 엄격한 비공개 메서드가 없습니다. 이는 메서드 호출 메커니즘에 따라 결정됩니다. obj c에서 개체의 메서드를 호출하는 것은 실제로 개체에 메시지를 보내는 것이며 개체는 이를 처리할 수 있는지 확인합니다. 이 메시지를 처리할 수 있으면 이를 구현하기 위해 해당 메서드가 호출됩니다. 처리할 수 없으면 예외가 발생합니다. 이는 전적으로 런타임 작업입니다. 따라서 헤더 파일에 메서드가 선언되지 않은 경우에도 런타임에 호출될 수 있으며 헤더 파일에 선언한 경우와 크게 다르지 않습니다. Xcode에서는 경고를 표시합니다.

    정적 메서드도 마찬가지입니다. 클래스 자체도 개체이기 때문입니다. 정적 메서드를 호출한다는 것은 이 개체에 메시지를 보내는 것을 의미합니다.

    개인적으로는 소위 프라이빗 메서드(헤더 파일에 정의되지 않음)가 프로그래머가 스스로 설정하는 제약에 가깝다고 생각합니다. 예를 들어 헤더 파일에 배치되지 않은 경우에는 그렇지 않다는 의미입니다. 노출됩니다. 원하는 경우 계속 사용할 수 있지만 메서드는 외부에서 호출될 것으로 예상되지 않습니다.

    매우 상세하고 명확한 이 기사를 참조하세요: http://blog.jobbole.com/45963/

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-22 09:01:28

    예, 인터페이스의 카테고리와 확장은 비공개 메소드와 동일합니다.
    카테고리: 클래스 이름 + 확장 방법; 확장: @implementation 영역
    검색하시면 됩니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-22 09:01:28

    .h에 선언된 모든 메서드는 기본적으로 공개됩니다.
    비공개로 설정하려면 .h에서 선언할 필요가 없으며 .m에서 직접 구현하면 됩니다. 모든 비공개 메소드는 p_로 시작하는 것이 좋습니다. 예:
    - (무효) p_myFirstMethod
    {
    //할일..
    }

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