main.m
/*
构造函数
1.同swift一样,构造函数分为指定构造函数和便利构造函数。
2.类的声明,在实现的时候引用了其他类时,需要包含#import其头文件,但是在头文件中
有时候仅仅是用作类型名,不需要其内部组成时,可以简单的用@class ClassName来声明。
*/
#import "Person.h"
int main(int argc, char * argv[])
{
@autoreleasepool
{
Person *p = [Person alloc];
p = [p initConvenience: @"TestName"];
}
return 0;
}
Person.h
#import <Foundation/Foundation.h>
@interface Person: NSObject
@property NSString *firstName;
@property NSString *lastName;
-(id) init; //标准构造函数
-(id) initDesinated:(NSString *)firstName second:(NSString *)lastName;
-(id) initConvenience:(NSString *)firstName;
@end
Person.c
#import <Foundation/Foundation.h>
#import "Person.h"
@implementation Person
-(id) init
{
NSLog(@"Init");
if ( self = [super init] )
{
_firstName = @"firstName";
_lastName = @"lastName";
}
return self;
}
-(id) initDesinated:(NSString *)firstName second:(NSString *)lastName
{
NSLog(@"initDesinated");
//原则上,指定构造函数需要实现所有成员的初始化
_firstName = firstName;
_lastName = lastName;
return self;
}
-(id) initConvenience:(NSString *)firstName
{
NSLog(@"initConvenience");
//convenience构造函数需要调用designated函数来实现
return [self initDesinated:@"firstName" second:nil];
}
@end