suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Objective-C无私有方法问题

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

PHP中文网PHP中文网2806 Tage vor457

Antworte allen(4)Ich werde antworten

  • PHPz

    PHPz2017-04-22 09:01:28

    建议看看 http://blog.sunnyxx.com/2014/04/13/objc_dig_interface/

    Antwort
    0
  • PHP中文网

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

    obj c没有严格的私有方法, 这是它的方法调用机制决定的, 在obj c里调用一个对象的某个方法, 其实就是给这个对象发送一个消息, 这个对象看看自己能不能处理这个消息,如果能处理就调用相应的方法实现, 如果不能处理就会抛异常,这个完全是运行时的动作。所以即便一个没有在头文件里显示声明的方法, 也可以在运行时被调用, 而且是跟你在头文件里声明了没有区别, 最多就是在xcode里会给你一个warning。

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

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

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

    Antwort
    0
  • 怪我咯

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

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

    Antwort
    0
  • PHP中文网

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

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

    Antwort
    0
  • StornierenAntwort