黑马程序员技术交流社区

标题: OC中如何实现私有方法,说说我的想法 [打印本页]

作者: 闪电侠    时间: 2015-7-10 22:18
标题: OC中如何实现私有方法,说说我的想法
本帖最后由 闪电侠 于 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,让外部根本没法调用,只能由本类内部调用
作者: dlamgg    时间: 2015-7-10 23:25
赞~~~~~~~~~~~~~
作者: 4B青年    时间: 2015-7-11 20:46
楼主辛苦了,收藏下。。。
作者: ccwinner    时间: 2015-10-9 14:30
请问这个私有方法如何去访问它?我看教学视频有个是用self去访问,但是还可以在该类其他方法中新建一个该类的对象,然后使用 [对象 方法] 去访问这个私有方法?这样真的可以吗
作者: wjy0916    时间: 2015-10-9 17:32
赞一个!!!!!!!!
作者: wxd123    时间: 2015-10-9 21:41
不错,赞一个!
作者: 啦啦啦啦你    时间: 2015-10-9 21:49
zan!!!!!!!!!!!!!!!!!!
作者: ccavbb    时间: 2016-2-19 10:10
楼主你好,为什么我试的 你这个匿名的Category 可以在外面调用呢
作者: 久伴    时间: 2016-2-19 10:16
学习学习,收藏了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2