このコードを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);
データ値を返すことができません。何が問題ですか?
回答:
回答№1は1NSDataオブジェクトを返す必要があります。
NSData* dataObj = nil;
if (datalen)
dataObj = [NSData dataWithBytes:data length:1];
return dataObj;
回答№2の場合は1
Javaでは、タイプの新しいオブジェクトラッパーを返します Byte
; Objective-Cでは、そのようなオブジェクトはありません。 Javaで返すオブジェクトは、1バイトまたは 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配列では機能しません。配列がメソッドに渡される場合、その長さも渡す必要があります。
回答№3の場合は1
Cでは、 sizeof
演算子(関数ではない)、この場合:
int datalen = sizeof data;
ただし、前述のphix23のようなNSDataを使用することをお勧めします。これは、Objective-Cのようなもので、多くの利点があります。