面试题答案
一键面试类的初始化方法
#import <Foundation/Foundation.h>
@interface SensorDataCollector : NSObject
@property (nonatomic, assign) NSTimeInterval samplingFrequency; // 采样频率
- (instancetype)initWithSamplingFrequency:(NSTimeInterval)frequency;
@end
@implementation SensorDataCollector
- (instancetype)initWithSamplingFrequency:(NSTimeInterval)frequency {
self = [super init];
if (self) {
if (frequency <= 0) {
// 处理采样频率不合理的情况
NSLog(@"采样频率必须大于0");
return nil;
}
_samplingFrequency = frequency;
}
return self;
}
@end
初始化过程中可能遇到的错误及处理方式
- 采样频率不合理:当传入的采样频率小于等于0时,这是不合理的设置。在代码中,当检测到这种情况时,通过
NSLog
输出错误信息,并返回nil
,表示初始化失败。在实际应用中,可能还需要向调用者提供更明确的错误反馈,例如通过NSError
对象来传递详细的错误信息。例如可以修改上述代码如下:
- (instancetype)initWithSamplingFrequency:(NSTimeInterval)frequency error:(NSError **)error {
self = [super init];
if (self) {
if (frequency <= 0) {
// 处理采样频率不合理的情况
NSDictionary *userInfo = @{NSLocalizedDescriptionKey : @"采样频率必须大于0"};
*error = [NSError errorWithDomain:@"SensorDataCollectorErrorDomain" code:1 userInfo:userInfo];
return nil;
}
_samplingFrequency = frequency;
}
return self;
}
调用方可以通过检查error
对象来获取具体的错误信息并进行相应处理。