Этот код работает, но я в основном промахиваюсь из-за недостатка знаний в C. Код работает, и кажется быстрее , чем создание NData
экземпляров каждый раз, когда мне нужно сделатьвызов метода.Но все ли в порядке (нет утечек, нет указателей)?
Меня особенно беспокоит приведение к Byte*
, которое было необходимо, чтобы компилятор передавал по конвейеру:
Вот код, упрощенный:
- (BOOL) isThisMethodOkay {
// I have a length, range and an NSData instance
Byte bytes[self.data.length];
[self.data getBytes:&bytes range:range];
return [self doSomething:bytes length:length]
}
- (BOOL) whatAboutThis {
return [self doSomething:(Byte*)self.data.bytes length:self.data.length];
}
- (BOOL) doSomething:(Byte*)bytes length:(NSUInteger)length {
return (length == CHECK_LENGTH && data1(bytes) == CHECK_DATA_1);
}
static int data1(Byte* bytes) {
int retVal = (int)bytes[1];
return retVal;
}
Примечание: весь код находится под ARC.