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

ByteJava では、タイプ;の新しいオブジェクト ラッパーを返しています。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割って計算する方法は、C 配列オブジェクトに対してのみ機能することに注意してください。sizeofメソッドに渡されるポインターと C 配列では機能しません。配列がメソッドに渡される場合、その長さも渡す必要があります。

于 2012-08-01T12:07:24.683 に答える
1

C では、次の場合はsizeof演算子を使用します (つまり、関数ではありません)。

int datalen = sizeof data;

しかし、phix23 のように NSData を使用することをお勧めします。これは、Objective-C に似ており、多くの機能が付属しています。

于 2012-08-01T12:09:35.603 に答える