私は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);
}
私の問題は、auxiliaryMethod内のコードが、 readFileメソッドによって計算されたのと同じ値を計算しないことです。_dataオブジェクトは同じなので、メソッドが異なる値を計算するのはなぜですか?そして、ご覧のとおり、auxiliaryMethod内のロジックは他のロジックの単なるコピーです...
他の言語(java)では、コードモードを読み取り可能/保守可能にするために、通常、いくつかのロジックを小さなメソッドに分離します。これが私がObjCでそれを模倣しようとしている理由です。
もちろん、それはおそらく何かが欠けていますが、数時間後、私はあきらめました。どこに間違いがあるのかわかりません。おそらく、プロジェクトを消去して再開する必要があります...
TIA、
ボブ