1

如何在 Objective-C 中移植这段代码?任何人请帮忙。

return data.length != 0 ? new Byte(data[0]) : null;  // In Java  

我正在这样做,但这并没有显示正确的结果

return datalen!= 0?malloc(sizeof(char) *data[0]) :NULL; //In Objective C it is write java data is byte 

**In obj C** datalen int datalen = sizeof(data)/sizeof(*data);

我无法返回数据值。问题是什么?

4

3 回答 3

1

您应该返回一个 NSData 对象:

NSData* dataObj = nil;
if (datalen)
        dataObj = [NSData dataWithBytes:data length:1];

return dataObj;
于 2012-08-01T12:04:29.983 回答
1

在 Java 中,您将返回一个新的类型的对象包装器Byte;在 Objective-C 中没有这样的对象。您在 Java 中返回的对象表示单个字节,或者null如果该字节不存在(即数据数组的长度为零)。

Objective-C 中最接近的东西是NSNumber

-(NSNumber*) theMethod {
    // Prepare the data and compute datalen
    return datalen ? [NSNumber numberWithChar:data[0]] : nil;
}

您需要在接收端打开值:

if (returnedValue != nil) {
    char ch = returnedValue.charValue;
}

请注意,datalen除以sizeof元素大小的计算方式仅适用于 C 数组对象。它不适用于传递给您的方法的指针和 C 数组。如果将数组传递到您的方法中,则还需要传递其长度。

于 2012-08-01T12:07:24.683 回答
1

在 C 中,使用sizeof运算符(即不是函数),在这种情况下:

int datalen = sizeof data;

但我建议使用提到的 phix23 之类的 NSData,它更像 Objective-C 并且带有很多好东西。

于 2012-08-01T12:09:35.603 回答