您的位置:首页 > 职场人生

黑马程序员--IOS基础第二十天(OC)

2015-07-15 11:07 302 查看


1、
OC中的点语法
点语法:
对象名.成员变量名
(点语法不是访问成员变量,而是方法的调用)
它是一个编译器特性
点语法作用:可以替换传统的get和set方法的调用
点语法的前提:
首先得先有get和set方法
点语法实质:
调用get和set方法
如果点语法出现在=
的左边,表示设置值,相当于调用了set方法
p.age = 10;
替换为:[p setAge:10];
如果点语法出现在=
的右边,表示获取值,相当于调用了get方法
int age = p.age;
替换为:int age = [p age];
替换为:[p dispAge:p.age];

[p dispAge:[p age]];
注意:
点语法实质是调用get和set方法,所以,如果没有定义成员变量的get和set方法,这个时候,
是不能使用点语法的。
2、@property使用、增强
1)@property
在Xcode4.4之前的使用方法
(1)只是用@property作为方法的声明
格式: @property intage;
表示帮我们生成一个get和set
age的方法
{

int age;

int _age;

NSString *_name;

}

@property int age;

-(void)setAge:(int) age;

-(int)age;

//手工实现 get和set方法
-(void)setAge:(int) age{

self->age = age;

}

-(int)age{

return age;

}

@property int _age;

-(void)set_age:(int) _age;

-(int)_age;

@property NSString *name;

-(void)setName:(NSString*) name;

-(NSString*)name;
( 2)
@synthesize 关键字
@synthesize 变量名;
自动帮我们实现对应的get和set方法
@synthesize age,_age;

@synthesize 相当于帮我们实现了下面的方法
-(void)setAge:(int) age{

self->age = age;

}

-(int)age{

return age;

}

@synthesize name;
( 3)
@synthesize name = _b;

{

NSString *name;

NSString *_b;

}

@property NSString *name;

@synthesize name; // get和set方法设定的是
name的值
@synthesize name = _b; //相当于操作_b的值
-(void)setName:(NSString *) name{

_b = name;

}

-(NSString *)name{

return _b;

}
注意:在4.4之前,
@property和@synthesize成对出现
2) @property
在Xcode4.4之后(
@property增强)
增强使用:
@property int score;

1) .h文件中
帮我们声明setScore(
setter)
和score(
getter)方法
2) .m
中帮我们生成 _score的私有变量(在外部不能访问,不能被子类继承)
3) .m
中帮我们实现 get和set方法
3、 @synthesize的使用
4、动态类型&id类型
动态类型:程序在运行的时候,才能确定对象属于什么类型
静态类型:程序编译的时候,就确定了对象的类型
动态类型的体现:
多态,父类指针可以指向子类对象
NSObject 是所有类的基类
NSObject *obj = [Dog new];

obj = [Person new];
父类调用子类特有的方法
[(Person *)obj eat];

//id类型, id类型又被称为
万能指针。
id obj; //运行时检查
obj = [Car new]; //实例变量_speed

[obj stop];

[obj stop];

5、动态类型检测的方法
7个方法
1)对象所属关系判断
对象是否是指定类或者子类的实例对象
isKindofClass
对象是否是指定类的实例对象
isMemberOfClass
类是否是另外一个类的子类
isSubclassOfClass

[Dog class]; Dog;

[d class];

2)判断能否响应方法
对象是否能够响应方法
respondsToSelector:
<
af93
span style="color:#000000;font-family:'宋体';font-size:9pt;">类是否能够响应方法
instranceRespondsToSelector:
类去响应方法
3)响应方法
传参数
6、构造方法的使用
[Person new];

-> [Person alloc]; //空间申请完后,不能立即使用,有可能会导致意想不到的错误
-> [[Person alloc] init];

[Person new]; 会把我们的成员变量的值,默认的设置为0

init 是我们OC类的一个构造方法
构造方法是类创建的时候,默认调用的
init 是继承自 NSObject

在子类中通过重写父类的init方法,指定成员变量初始化值
init方法的固定格式:
-(id)init{

//初始化父类的
//判断是否初始化成功
if(self = [super init]){

//初始化自己的信息
_age = 10;

}

//返回
return self;

}

7、自定义构造方法
如果要指定成员变量值的初始化,需要自定义构造方法
1)一定是对象方法
2)返回值
一般是 id类型
3)一定是以initWith开头
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: