Java函数的Objective-C等价

Java函数的Objective-C等价,java,objective-c,arrays,Java,Objective C,Arrays,如何编写与此Java代码等价的Objective-C public static @Nullable byte[] getUnknownData(Sample s){ int length = s.data.length-index; byte data[] = new byte[length]; for(int i=0;i<length;i++){ data[i]=s.data[UNKNOWN_STATUS_INDEX+i].byteValue()

如何编写与此Java代码等价的Objective-C

public static @Nullable byte[] getUnknownData(Sample s){
    int length = s.data.length-index;
    byte data[] = new byte[length];
    for(int i=0;i<length;i++){
        data[i]=s.data[UNKNOWN_STATUS_INDEX+i].byteValue();
    }
    return data;
}

您应该使用
NSMutableData
,它是
NSData
的可修改子类:

-(NSData *)getUnknownData:(Sample s){
   int length = s.data.count-index;
   NSMutableData *theData = [NSMutableData dataWithCapacity:length];

   theData.length = length;
   char *theBytes = (char *)theData.mutableBytes;
   for(int i = 0; i < length; ++i) {
       theBytes[i] = (char)[s.data[UNKNOWN_STATUS_INDEX + i] intValue]
   }
   return [theData copy];
}
-(NSData*)getUnknownda:(示例s){
int length=s.data.count-index;
NSMutableData*数据=[NSMutableData数据带容量:长度];
data.length=长度;
char*theBytes=(char*)theData.mutableBytes;
对于(int i=0;i

保留所需的字节数后,您必须将数组中的每个值转换为数据对象。

我有一个错误:在“NSArray*”类型的对象上找不到属性“bytes”,在保留所需的字节数后,仅作为旁注:容量不是实例可以容纳的字节总数,只是一个提示。是的,你是对的。但我的意思是
theData.length=length这将确保字节缓冲区的大小至少为
长度
字节,并且数据对象不能使其变小。
-(NSData *)getUnknownData:(Sample s){
   int length = s.data.count-index;
   NSMutableData *theData = [NSMutableData dataWithCapacity:length];

   theData.length = length;
   char *theBytes = (char *)theData.mutableBytes;
   for(int i = 0; i < length; ++i) {
       theBytes[i] = (char)[s.data[UNKNOWN_STATUS_INDEX + i] intValue]
   }
   return [theData copy];
}