/ / mallocを使用して目的cにjava-java、objective-c、char、byte、移植

mallocを使って目的のCにJavaを変換する - java、objective-c、char、byte、porting

このコードを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は1

NSDataオブジェクトを返す必要があります。

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のようなもので、多くの利点があります。