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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 牛角尖、 中级黑马   /  2015-12-17 17:14  /  826 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类 
接口和实现 
Objective-C的类分为接口定义和实现两个部分。接口定义(Interface)放在头文件中,文件扩展名是.h,实现(implementation)放在实现文件中,文件扩展名是.m(也有.mm的扩展名,表示Objective-C和C++混编的代码)。 
接口定义也可以写在.m文件中,但最好不要这么干 
需要注意的是,与Objective-C的interface概念最接近的是C和C++里的头文件,它与implementation是成双成对出现的,作用是声明类的成员变量和方法。它与Java的interface概念完全不同: 
 
Objective-C里,interface有且只有一个实现,Java的interface可以有0-N个实现 
 Objective-C里,interface可以定义成员属性,Java里不可以 
在Objective-C里,和Java的Interface概念相似的是Protocol,下文会讲到。 请看示例: Interface 
@interface MyClass {     int memberVar1;     id  memberVar2; } 









 
-(return_type) instance_method1;  
-(return_type) instance_method2: (int) p1; 
-(return_type) instance_method3: (int) p1 andPar: (int) p2; @end 
Implementation 
@implementation MyClass {     int memberVar3; }  
-(return_type) instance_method1 {     .... } 
-(return_type) instance_method2: (int) p1 {     .... } 
-(return_type) instance_method3: (int) p1 andPar: (int) p2 {     .... } @end 
接口和实现以@interface、@implementation开头,都以@end结束。“@”符号在Objective-C中是个很神奇的符号。 
冒号也是方法名的一部分,method和method:是两个不同的方法名,不是overload,第二个带参数。 上述代码对应的Java版: 
public class MyClass {     protected int memberVar1;     protected pointer memberVar2;     private int memberVar3;  
    public (return_type) instance_method1() {         ....     }  
    public (return_type) instance_method2(int p1) {         ....     }  
    public (return_type) instance_method3andPar(int p1, int p2) { 









        ....     } } 
私有方法和公开方法 
写在.h头文件里的方法都是公开的,Objective-C里没有私有方法的概念(没有你说个蛋啊,哈哈哈哈)。 
官方并没有提到Objective-C怎么实现私有方法,我查阅了stackoverflow,统一的答案是,要实现私有方法的效果只能借助Category,不过,根据我的测试,即使采用了Category,也不能阻止外部的代码调用这个“私有方法”,只是Xcode不支持“私有方法”的自动完成,并会有警告提示,运行的时候,还是会成功的。各位看官知道有这么回事就可以了

1 个回复

倒序浏览
非常好!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马