Objective-C无私有方法问题
PHP中文网
PHP中文网 2017-04-22 08:59:28
0
4
454

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

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(4)
PHPzhong

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

Ty80

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

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

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

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

刘奇

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

洪涛

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿