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

© you7759 中级黑马   /  2014-12-14 19:47  /  539 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、定义类:
@interface 类名 : 父类
@end

2、使用:(冒号)表示继承一个类
Student : NSObject

3、使用()定义一个Catagory(类别)

* 作用:在不改变原有类结构的基础上,扩展原有类的方法(不能扩展属性),但不建议重载原有类的方法
* 开发工具默认生成的文件为:类名+Catagory名称
* Catagory可以写在单独的文件中,也可以写在原有类的文件中,如何写根据需求来决定。

4、使用<>表示实现一个Protocol(协议),如需实现多个协议,将协议名以逗号分隔都写在括号中即可
*可以理解为java中的接口,但不同的是,实现类编译器不强制实现Protocol中定义的所有接口
* 在方法签名上标识:@required,从字面上理解实现类必须实现该方法,其实写与不写一样的效果。也是默认的
* 在方法签名上标识:@optional,表示实现类对该方法的实现,是可选的。
  
5、属性的访问权限
* private : 只有类内部可以访问
* protected : 类内部和子类可以访问(默认)
* public : 访问没有限制

例:

// 定义

@interface Student : NSObject {
@private int _age;
@protected int _no;
@public float _height;
}
@end

// 使用
Student *stu = [[[Student alloc]init]autorelease];
stu->_height = 20;// 直接读写属性的值,开发当中一般不建议这么做。违背了面向对象的开发原则-》封装性

6、属性的定义与封装
// in Student.h
@interface Student : NSObject {
// 1. 定义属性,默认访问权限是@protected的,只有自已和子类可以直接访问
int _age;// OC语法中建议属性名前面加上下划线,以和参数名区分
int _no;
}

// 2.提供属性对外读写方法的声明,供外界调用。OC创建属性读写方法的命名规则是为,set方法: set+属性名,get方法:属性名
// 声明age的get和set方法
- (int)age;
- (void)setAge:(int)age;

// 声明no的get和set方法
- (int)no;
- (void)setNo:(int)no;
@end

// in Student.m 实现头文件中的方法
#import "Student.h"// 导入头文件
@implementation Student

// 实现头文件中的方法
- (int)age {  // age的getter方法
return _age;
}

- (void)setAge:(int)age {// age的setter方法
_age = age;
}

- (int)no {
return _no;
}

- (void)setNo:(int)no {
_no = no;
}
@end

7、使用@synthesize自动生成属性getter和setter方法的实现,同时会生成一个下划线(_)+属性名的成员变量。需要和@property配合使用。例:
@implementation Student

@synthesize age;// 这一句顶下面的get和set方法,由@synthesize自动生成
/*
* 1. 如果显示实现了get方法,@synthesize会自动生成属性的set方法实现
* 2. 如果显示实现了set方法,@synthesize会自动生成属性的get方法实现
* 3. 如果即没有实现get方法,也没有实现set方法,则@synthesize会自动生成属性的get和set方法实现
*/
- (int)age {  // age的getter方法
return _age;
}

- (void)setAge:(int)age {// age的setter方法
_age = age;
}

@end

注:在xcode4.5以后的编译环境中,不需要写@synthesize声明生成属性的get和set方法实现。只需要在头文件中用@property定义即可自动在.m文件中生成相应属性的get和set方法实现


1 个回复

倒序浏览
原来冒号+前括号    :+(   就是这表情:(
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马