Objective-C无私有方法问题

 Yunir_944 发布于 2022-10-27 12:30

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

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

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

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

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

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

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

    2022-10-28 11:03 回答
  • 2022-10-28 11:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有