使用场景
实例化一个对象需要两步,第一步为对象分配内存空间,第二步讲对象初始化,对象初始化通过NSobject中的nint方法实现。为了让对象在初始化时其对象就有值,就要使用狗造方法
步骤
1. 通过 [super init]调用父类的初始化方法。
2.检查父类返回的对象,如果不为空再进行操作。
3.在初始化实例对象时,如果他们是其他对象的引用,则在必要时应该注意保留。
4.为变量设置初始值,返回self。
示例:
//phone.h
#import <Foundation/Foundation.h>
@interface Phone : NSObject
@property(nonatomic,assign)int number;
@property(nonatomic)NSString* brand;
@end
//phone.m
#import "Phone.h"
@implementation Phone
-(id)init
{
self =[super init];
if (self!=nil) {
_number =10086;
_brand = @"华为";
}
return self;
}
@end
自定以构造方法
init方法不能接收参数,若要在init时传入参数,需要自定义构造方法。
一般自定义构造方法名以 initWith开头:
//phone.h
-(id)initWithBrandAndNumber:(NSString*)brand:(int)number;
//phone.m
#import "Phone.h"
@implementation Phone
-(id)initWithBrandAndNumber:(NSString *)brand :(int)number
{
self =[super init];
if (self!=nil) {
_brand = brand;
_number =number;
}
return self;
}
@end
//main
int main(int argc, const char * argv[]) {
@autoreleasepool {
Phone *p1 = [[Phone alloc]initWithBrandAndNumber:@"三星" :10087];
NSLog(@"品牌为%@的电话号码为%d",p1.brand,p1.number);
}
return 0;
}