我正在尝试学习objective-c。我正在尝试解析二进制文件,执行以下操作(简化):
@interface DatFile : NSObject {
NSData* _data;
}
-(id)initWithFilePath:(NSString *)filePath;
-(void) readFile;
-(void) auxiliaryMethod;
@implementation DatFile
- (id) initWithFilePath:(NSString *)filePath {
if ( self = [super init] ) {
_data = [NSData dataWithContentsOfFile:filePath];
}
return self;
}
-(void) readFile {
int header;
[_data getBytes: &header range: NSMakeRange(0, 4)];
NSLog(@"header: %u", header);
short key;
[_data getBytes: &key range: NSMakeRange(4, 2)];
NSLog(@"key: %u", key);
short value;
[_data getBytes: &value range: NSMakeRange(6, 1)];
NSLog(@"value: %u", value);
[self auxiliaryMethod];
}
-(void) auxiliaryMethod {
short value;
[_data getBytes: &value range: NSMakeRange(6, 1)];
NSLog(@"value: %u", value);
}
我的问题是辅助方法中的代码不会计算readFile方法计算的相同值。既然_data对象是相同的,为什么该方法计算不同的值?而且,如您所见,辅助方法内部的逻辑只是另一个的副本......
在其他语言(java)中,我通常在较小的方法中分离一些逻辑,以使代码模式可读/可维护。这就是为什么我试图用 ObjC 来模仿它。
当然,这可能会遗漏一些东西,但几个小时后,我放弃了。我不明白我的错误在哪里。也许我应该删除我的项目并重新开始......
TIA,
鲍勃