0

私はiPad用のコードを書いています。私が定義するポイント構造があります:

typedef struct __Point32_t
{
    int32_t x;
    int32_t y;
}Point32_t;

Objective-C メソッドから構造体を受け取るコードは次のとおりです。

Point32_t ModalityPan = [self ReadPoint];

メソッドは次のとおりです。

-(Point32_t)ReadPoint
{
    Point32_t P;
    P.x = [self ReadInt];
    P.y = [self ReadInt];
    return P;
}

戻り値を構造体に代入すると、コンパイル時にエラーが発生します。エラーは、無効な初期化子があると主張しています。割り当てを次のように変更した場合:

Point32_t * ModalityPan = [self ReadPoint];

エラーはなくなります。そのため、Objective-C で実際に何が返されているのか疑問に思っています。私は多くの投稿を検索しましたが、いくつかは SO にあり、構造を参照する必要なく、Obj-C のメソッドとの間で構造が渡されたり返されたりするという印象を受けました (たとえば、値渡しが許可されています)。

ここでボンネットの下で何が起こっているのか、誰か説明できますか? 戻ってくるのは参照か構造か? 構造体の場合、割り当てられる変数の型として参照を指定する必要があるのはなぜですか?

4

1 に答える 1

0

私のメソッドが@interfaceで定義されておらず、メソッドの実装が私の使用を下回っていることをコンパイラが非常に間接的な方法で警告していたことがわかりました。そのため、コンパイラは戻り値の型を特定できなかったようです。正しくコンパイルされるようになりました。

于 2012-08-02T03:55:35.833 に答える