Object-c中对象初始化

来源:互联网 发布:js函数参数传递方式 编辑:程序博客网 时间:2024/05/16 09:28

对象初始化的两种基本方法;[[类名 alloc] init]和[类名 new]

基本初始化

所有类都可以调用alloc类方法来分配内存,当程序调用某个类的alloc类方式时,系统会完成1.位该对象的所有实例变量分配内存空间2.将每个实例变量的内存空间都重置为0:所有的整形变量所在空间都重置为0,所有的浮点类型变量重置为0.0,所有的boolL类型变量都重置为NO,所有的指针类型变量都重置为nil。

使用alloc方式只是为对象分配空间,使用还必须进行初始化。

从功能上object-c的初始化方法和Java的构造器基本相同。Java在对象实例化时虽然只需要new,但是其也分为分配内存和初始化对象两部分

重写初始化方法实现对属性的目标初始化

#import<Foundation/Foundation.h>

@interface User;NSObject

@property (nonautomic,copy)NSString* name;

@property(nonautomic,assign)int  age;

@property(nonautomic,copy)NSString* address;

@end


#import “User.h”

@implementation User

-(id) init{

//重写父类的init方法

//调用父类的init方法进行初始化,将初始化得到的数值数值给self,如果self不为nil则表示初始化成功

if(self=[super init]){

self->_name=@"jack";

self->_age=20;

self->_address=@"shang hai"

}

return self;

}

@end


带参数的初始化

#import <Foundation/Foundation.h>

interface Car:NSObject

@property (nonatomic,copy) NSString* brand;

@property (nonatomic,copy)NSString* model;

@property(nonatomic,copy)NSString* color;

//定义带参数的初始化方法

-(id) initWitnBrand:(NSString*) brand model:(NSString*) model;

-(id) initWitnBrand:(NSString*) brand model:(NSString*) model color:(NSString*) color;

@end


#import "Car.h"

@implementation Car

-(id) init{

if(self=[super init]){

self->_brand=@"BMW";

self->_model=@"a1";

self->_color=@"blue";

}

return self;

}

-(id) initWitnBrand:(NSString*) brand model:(NSString*) mode{

self->_brand=brand;

self->_model=model;

self->_color=@"blue";

}


0 0
原创粉丝点击