---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
关键字@property和@synthesize
@interface Person : NSObject
// 使用@property生成和实现成员变量的set方法和get方法,并生成成员变量。
@property NSString *name;
@property int age;
// @property 可以自动生成成员变量的set方法和get方法的声明
@end
@implementation Person
/* @synthesize可以自动生成成员变量的set方法和get方法的实现,可以自动创建成员变量。
@property可以实现@synthesize的这些功能。*/
// @synthesize name;
// @synthesize age;
@end
自动生成set方法和get方法的声明,可以实现@synthesize的功能。
@synthesize
自动生成set方法和get方法的实现,自动生成成员变量
id
万能指针,可以指向、操作任何类型的对象
构造方法
创建对象时使用的new方法继承自NSObject
new方法分为两步:
第一步是给对象分配存储空间,使用alloc方法,
第二步是初始化对象,使用init方法,即构造方法。
格式如下:
Person *p = [[Person alloc] init];
重写构造方法:使创建出来的对象,成员变量会有一些固定值。
重写构造方法时,需要先调用父类的构造方法,再进行子类内部成员变量初始化。
这里输出p的age值,使用的时OC中的点语法。输出结构是age = 10。OC中点语法的本质是方法的调用。同等于[对象名 方法名]
自定义构造方法
在创建对象的同时,对对象的属性进行赋值。
这里自定义一个构造方法,在进行初始化时,对对象的成员变量name和age进行赋值。
用法:Person *p = [[Person alloc] initWithName:@"jack" andAge:10];
自定义构造方法命名规范
1> 一定是对象方法,以 - 开头
2> 返回值为id类型
3> 方法名以initWith开头
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
重写构造方法:使创建出来的对象,成员变量会有一些固定值。
@implementation Person
// 重写构造方法,初始化成员变量age = 10
- (id)init
{ // 先调用父类构造方法,初始化对象
if (self = [super init])
{ // 初始化成功,对对象成员赋值
_age = 10;
}
// 返回初始化后的对象
return self;
}
@end
使用重写后的构造方法,创建一个对象:
int main()
{ // 创建对象,age初始值为10
Person *p = [[Person alloc] init];
// p.age是点语法,等同于[p age]。点语法的本质是方法的调用。
NSLog(@"age = %d",p.age);
return 0;
}
自定义构造方法
在创建对象的同时,对对象的属性进行赋值。
- (id)initWithName:(NSString *)name andAge:(int)age
{
if (self = [super init])
{
_name = name;
_age = age;
}
return self;
}
用法:Person *p = [[Person alloc] initWithName:@"jack" andAge:10];
自定义构造方法命名规范
1> 一定是对象方法,以 - 开头
2> 返回值为id类型
3> 方法名以initWith开头
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net