1 #import <Foundation/Foundation.h>
2
3
4 /*
5 需求:
6 由于init构造方法不能传递参数进去。对于初始化成员变量不够灵活,只能写死。
7 所以我们可以自己定义构造方法来初始化对象。需要遵守几个规则,让人一看就知道
8 是构造方法而且不会出错。
9
10 掌握:
11 自定构造方法的规范(类型、返回值、名称)
12 1.类型:构造方法一定是对象方法,一“-”号开头。
13 2.返回值:构造方法的返回值是id
14 3.名称:构造方法一般都以initWith开头,表示用什么来初始化。
15 */
16
17
18 @interface Person : NSObject
19 @property NSString * name;
20 @property int age;
21 @end
22
23 @implementation Person
24
25 // overrid
26 - (id)init
27 {
28
29 if (self = [super init]) {
30
31 _name = @"jack";
32 _age = 1;
33 }
34 return self;
35 }
36
37 //自定义构造方法
38 - (id)initWithName:(NSString *)name
39 {
40
41 if (self = [super init]) {
42
43 _name = name;
44 }
45 return self;
46 }
47
48 - (id)initWithAge:(int)age
49 {
50
51 if (self = [super init]) {
52 _age = age;
53 }
54 return self;
55 }
56
57 - (id)initWithName:(NSString *)name andAge:(int)age
58 {
59
60 if (self = [super init]) {
61
62 _name = name;
63 _age = age;
64 }
65 return self;
66 }
67
68 @end
69
70 int main() {
71
72
73 Person *p = [[Person alloc] initWithName:@"suweipeng" andAge:23];
74 NSLog(@"person's name is:%@, age is:%i", p.name, p.age);
75
76 return 0;
77 }