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

如题,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里会给你一个warning。

静态方法也是一样, 因为一个类本身也是一个对象, 调用静态方法, 也就是给这个对象发送一个消息。

所谓的私有方法(不定义在头文件里),我个人觉得更多的是一种程序员们对自己的约束, 比如没放在头文件里, 就是不暴露出去的意思, 就是这个方法是不希望在外面被调用到的, 虽然你想用的话一样可以用。

参考这篇文章, 说的很详细清晰: http://blog.jobbole.com/45963/

刘奇

有啊,interface中的类目和延展就相当于私有方法。
类目:类名+扩展方法;延展:@implementation区域
你可以去搜索一下。

洪涛

所有在.h 中声明的方法,默认都是公开的。
如果想它成为私有的,无须在.h中声明,直接在.m中实现即中。建议所有私有方法以p_开头,ex:
- (void) p_myFirstMethod
{
//todo..
}

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板