方法的使用与调用
方法的调用
在初始化Person对象的时候,我们使用到了以下代码: 1. Person *person1 = [Person alloc]; 2. person1 = [person1 init];
按住command键,点击alloc可以进入到NSObject的头文件中,找到alloc与init方法的声明:
1. + (instancetype)alloc; // 开辟内存
2. - (instancetype)init; // 初始内存
- 方法使用
空格来调用; +方式使用类名进行调用,如这里的[Person alloc];-方式使用对象进行调用,如这里的[person1 init]。
对象的初始化
刚才初始化Person对象的时候,我们所使用的是init方法,但是这样init出来的对象没有自身独有的元素。比如,我们的Person类中,还有姓名、年龄等成员变量根本体现不出来。如果想要对某个人的姓名、年龄赋值,怎么办呢?
自定义初始化方法
首先在.h的@interface内部声明方法(如果不声明,则外则不可访问):
1. #import
然后在.m中进行实现: 1. #import "Person.h" 2. 3. @implementation Person 4. 5. - (instancetype)initWithName:(NSString *)name age:(NSInteger)age height:(float)height { 6. 7. self = [super init]; 8. 9. if (self) { 10. 11. // 需要添加的特性 12. _name = name; 13. _age = age; 14. _height = height; 15. } 16. 17. return self; 18. } 19. 20. @end
在自定义初始化方法的时候,一定要注意一下几点:
1. 方法名必须是initWith开头,注意大小写;
2. 每个init方法的基本结构如下:
1. - (instancetype)initWithXxx:(NSString *)xxx {
2. 3. self = [super init];
4. 5. if (self) {
6. 7. // 需要添加的特性
8. }
9. return self;
10. }
那么这个时候,我们在main.m中的Person初始化方法也需要修改: 1. Person *person2 = [[Person alloc] initWithName:@"tangjr" age:10 height:100];
description方法
当使用NSLog打印对象信息的时候,系统会走该对象的description方法。
比如这里,我们想要输出person2这个人的信息,就可以通过重写description来实现。
