黑马程序员—Objective-C基础_构造方法

来源:互联网 发布:淘宝刷钻怎么刷 编辑:程序博客网 时间:2024/05/22 00:35
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

关键字@property和@synthesize
@interface Person : NSObject
// 使@propertysetget
@property NSString *name;
@property int age;
// @property setget
@end
@implementation Person
/* @synthesizesetget
@property@synthesize*/
// @synthesize name;
// @synthesize age;
@end
@property
自动生成set方法和get方法的声明,可以实现@synthesize的功能。
@synthesize 
自动生成set方法和get方法的实现,自动生成成员变量

id
万能指针,可以指向、操作任何类型的对象

构造方法
创建对象时使用的new方法继承自NSObject
new方法分为两步:
第一步是给对象分配存储空间,使用alloc方法,
第二步是初始化对象,使用init方法,即构造方法。
格式如下:
Person *p = [[Person alloc] init];

重写构造方法:使创建出来的对象,成员变量会有一些固定值。
@implementation Person
// age = 10
(id)init
{   // 
    if (self = [super init])
    {   // 
        _age = 10;
    }
    // 
    return self;
}
@end
重写构造方法时,需要先调用父类的构造方法,再进行子类内部成员变量初始化。 
使用重写后的构造方法,创建一个对象:
int main()
{   // age10
    Person *p = [[Person alloc] init];
    // p.age[p age]
    NSLog(@"age = %d",p.age);
    
    return 0;
}
这里输出p的age值,使用的时OC中的点语法。输出结构是age = 10。OC中点语法的本质是方法的调用。同等于[对象名 方法名] 

自定义构造方法
在创建对象的同时,对对象的属性进行赋值。
(id)initWithName:(NSString *)name andAge:(int)age
{
    if (self = [super init])
    {
        _name = name;
        _age = age;
    }
    return self;
}
这里自定义一个构造方法,在进行初始化时,对对象的成员变量name和age进行赋值。
用法:Person *p = [[Person alloc] initWithName:@"jack" andAge:10];

自定义构造方法命名规范
1> 一定是对象方法,以 - 开头
2> 返回值为id类型
3> 方法名以initWith开头 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
0 0
原创粉丝点击