MST

星途 面试题库

面试题:Objective-C类初始化方法的基础理解

在Objective-C中,简述`init`方法和`initWith...`方法在类初始化时的作用与区别,并举例说明何时使用`initWith...`方法。
10.6万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

作用

  1. init方法:是Objective-C中对象初始化的基本方法,用于为对象分配内存并执行基本的初始化操作,如设置默认属性值等。它是类初始化的入口点之一,每个类通常都应该有一个init方法。
  2. initWith...方法:是一种自定义的初始化方法,通常用于在初始化对象时传入特定的参数,以便更灵活地对对象进行初始化设置,比如根据传入的不同参数值来初始化对象的不同属性。

区别

  • 参数方面init方法通常没有参数,它只为对象进行最基本的初始化;而initWith...方法有参数,通过传入参数来定制对象的初始化。
  • 功能定制性init方法执行的是通用的、默认的初始化逻辑;initWith...方法可根据传入参数执行更个性化的初始化逻辑。

何时使用initWith...方法举例

假设我们有一个Person类,有nameage两个属性。当我们想要在创建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对象时就能够传入姓名和年龄信息,实现了个性化的初始化。