MST

星途 面试题库

面试题:Objective-C 中如何初始化一个用于传感器数据采集的类

假设你正在开发一个使用 Objective-C 进行传感器数据采集的应用,需要创建一个类来处理传感器数据采集相关操作。请写出这个类的初始化方法,该方法需要设置传感器的基本属性,如采样频率等,同时说明在初始化过程中可能遇到的错误及处理方式。
20.8万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

类的初始化方法

#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

初始化过程中可能遇到的错误及处理方式

  1. 采样频率不合理:当传入的采样频率小于等于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对象来获取具体的错误信息并进行相应处理。