pragma mark 自定义构造方法
pragma mark 概念
/*
自定义构造方法:
其实就是自定义一个init方法
1. 一定是对象方法
2. 一定返回id/instancetype
3. 方法名称 一定以init开头
// 一个类可以有0个 或者 多个自定义构造方法
- (instancetype)initWithAge:(int)age;
- (instancetype)initWithName:(NSString *)name;
// 自定义构造方法 可以有1个或多个参数
- (instancetype)initWithAge:(int)age andName:(NSString *)name;
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
// Person *p = [Person new];
// Person *p = [[Person alloc]init];
// p.age = 20;
// Person *p = [[Person alloc]initWithAge:20];
// Person *p = [[Person alloc]initWithName:@"lyh"];
Person *p = [[Person alloc]initWithAge:20 andName:@"lyh"];
NSLog(@"%@",p);
// Person *p2 = [Person new];
// Person *p2 = [[Person alloc]init];
// p2.age = 30;
// Person *p2 = [[Person alloc]initWithAge:30];
// Person *p2 = [[Person alloc]initWithName:@"lys"];
Person *p2 = [[Person alloc]initWithAge:30 andName:@"lys"];
NSLog(@"%@",p2);
return 0;
}
Person.h //人类
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@property NSString *name;
/*
自定义构造方法:
其实就是自定义一个init方法
1. 一定是对象方法
2. 一定返回id/instancetype
3. 方法名称 一定以init开头
*/
#warning 自定义构造方法
- (instancetype)initWithAge:(int)age;
// 一个类可以有0个 或者 多个自定义构造方法
- (instancetype)initWithName:(NSString *)name;
// 自定义构造方法 可以有1个或多个参数
- (instancetype)initWithAge:(int)age andName:(NSString *)name;
@end
Person.m
#import "Person.h"
@implementation Person
- (instancetype)init
{
if (self = [super init]) {
_age = 5;
}
return self;
}
#warning 自定义构造方法
- (instancetype)initWithAge:(int)age
{
if (self = [super init]) {
_age = age;
}
return self;
}
- (instancetype)initWithName:(NSString *)name
{
if (self = [super init]) {
_name = name;
}
return self;
}
- (instancetype)initWithAge:(int)age andName:(NSString *)name
{
if (self = [super init]) {
_age = age;
_name = name;
}
return self;
}
#warning 重写(description)描述方法
- (NSString *)description
{
return [NSString stringWithFormat:@"age = %i, name = %@",_age,_name];
}
@end