天天看点

obj-c中如何定义类的私有实例方法

obj-c原生没有提供此项机制,不像java有private/protected/public方法的概念。obj-c中的@private以及类似的@protected和@public是用于修饰类的实例变量的而不能修饰方法。

正如obj-c没有类变量可以通过定义static静态变量来解决一样,obj-c中类的私有实例方法也是可以通过分类来模拟的。我们可以将分类定义从类的头文件中转移到类的实现文件中来实现:

foo.h

foo.m

main.m

程序运行结果:

如果将直接调用calc那行代码去掉注释则编译报错如下: