A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 闪电侠 于 2015-7-10 22:22 编辑

我们知道在很多面向对象的高级语言中有私有方法,即用private关键词修饰的方法,但是在OC中,虽然也有类似的关键字@private,但此关键词不能修饰方法,否则编译器报错,那么这就意味着所有对象方法和类方法都将是公开的,这在开发中显然不合理,那么有没有办法来实现类似私有方法的效果呢?

我想到两种方法:

第一种:
  1. // .h文件
  2. @interface Person : NSObject

  3. @end
复制代码
  1. // .m文件
  2. @implementation Person
  3. - (void)run{

  4. }
  5. @end
复制代码
不在.h文件中申明方法,只在.m文件中实现方法

第二种:
  1. // .h文件
  2. @interface Person : NSObject
  3. @end

  4. // 匿名Category
  5. @interface Person ()
  6. - (void)run;
  7. @end
复制代码
  1. // .m文件
  2. @implementation Person
  3. - (void)run{

  4. }
  5. @end
复制代码

即使用一个匿名的Category,让外部根本没法调用,只能由本类内部调用

8 个回复

倒序浏览
赞~~~~~~~~~~~~~
回复 使用道具 举报
楼主辛苦了,收藏下。。。
回复 使用道具 举报
请问这个私有方法如何去访问它?我看教学视频有个是用self去访问,但是还可以在该类其他方法中新建一个该类的对象,然后使用 [对象 方法] 去访问这个私有方法?这样真的可以吗
回复 使用道具 举报
赞一个!!!!!!!!
回复 使用道具 举报
不错,赞一个!
回复 使用道具 举报
zan!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
ccavbb 初级黑马 2016-2-19 10:10:22
8#
楼主你好,为什么我试的 你这个匿名的Category 可以在外面调用呢
回复 使用道具 举报
久伴 中级黑马 2016-2-19 10:16:53
9#
学习学习,收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马