面试题答案
一键面试-
创建自定义类:
- 在Objective - C中,创建一个自定义类需要定义一个类接口(
.h
文件)和类实现(.m
文件)。 - 类接口(
.h
文件):#import <Foundation/Foundation.h> // 自定义类的声明,类名通常大写字母开头 @interface CustomClass : NSObject // 在这里声明属性和方法 @property (nonatomic, strong) NSString *name; - (void)printInfo; @end
@interface
关键字开始类的声明,CustomClass
是自定义类名,NSObject
是父类,Objective - C中所有类最终都继承自NSObject
。@property
用于声明属性,这里声明了一个name
属性,nonatomic
表示非原子性访问,strong
表示强引用。- (void)printInfo;
声明了一个实例方法。
- 类实现(
.m
文件):#import "CustomClass.h" @implementation CustomClass // 实现方法 - (void)printInfo { NSLog(@"Name is: %@", self.name); } @end
@implementation
关键字开始类的实现,在这里实现类接口中声明的方法。
- 在Objective - C中,创建一个自定义类需要定义一个类接口(
-
创建实例对象:
- 可以使用
alloc
和init
方法来创建实例对象。
CustomClass *customObject = [[CustomClass alloc] init]; customObject.name = @"Example Name"; [customObject printInfo];
[[CustomClass alloc] init]
首先通过alloc
为对象分配内存空间,然后通过init
方法初始化对象。
- 可以使用
-
对象生命周期主要涉及的方法:
- 初始化方法:
init
:通用的初始化方法,在alloc
后调用,通常用于对对象进行基本的初始化操作。initWith...
:自定义的初始化方法,可以带参数,用于更具体的初始化场景。例如- (instancetype)initWithName:(NSString *)name;
。
- 内存管理相关方法(ARC前):
retain
:增加对象的引用计数。release
:减少对象的引用计数。autorelease
:将对象放入自动释放池,在自动释放池销毁时,会向池中的对象发送release
消息。
- ARC下内存管理相关方法:虽然ARC(自动引用计数)简化了内存管理,但对象仍有相关的方法。
dealloc
:当对象要被销毁时调用。在ARC下,主要用于释放非Objective - C对象(如Core Foundation对象),以及执行一些清理操作,例如关闭文件描述符等。
- 对象状态保存与恢复相关方法:
encodeWithCoder:
:用于归档对象(将对象状态保存到文件等持久化存储),当对象遵循NSCoding
协议时需要实现此方法。initWithCoder:
:用于从归档数据中恢复对象状态,同样在遵循NSCoding
协议时实现。
- 初始化方法: