面试题答案
一键面试作用
init
方法:是Objective-C中对象初始化的基本方法,用于为对象分配内存并执行基本的初始化操作,如设置默认属性值等。它是类初始化的入口点之一,每个类通常都应该有一个init
方法。initWith...
方法:是一种自定义的初始化方法,通常用于在初始化对象时传入特定的参数,以便更灵活地对对象进行初始化设置,比如根据传入的不同参数值来初始化对象的不同属性。
区别
- 参数方面:
init
方法通常没有参数,它只为对象进行最基本的初始化;而initWith...
方法有参数,通过传入参数来定制对象的初始化。 - 功能定制性:
init
方法执行的是通用的、默认的初始化逻辑;initWith...
方法可根据传入参数执行更个性化的初始化逻辑。
何时使用initWith...
方法举例
假设我们有一个Person
类,有name
和age
两个属性。当我们想要在创建Person
对象时就指定姓名和年龄时,就可以使用initWith...
方法。
@interface Person : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;
- (instancetype)initWithName:(NSString *)name age:(NSInteger)age;
@end
@implementation Person
- (instancetype)initWithName:(NSString *)name age:(NSInteger)age {
self = [super init];
if (self) {
_name = name;
_age = age;
}
return self;
}
@end
// 使用
Person *person = [[Person alloc] initWithName:@"John" age:30];
在上述代码中,initWithName:age:
方法让我们在创建Person
对象时就能够传入姓名和年龄信息,实现了个性化的初始化。