2012-04-28 13 views
0

私はobjective-cでゲームを作成しており、2つのオブジェクトがフレームを交差するときを検出する必要があります。Objective-C:別のクラス内のオブジェクトのプロパティにアクセスするには?

私は通常、私の唯一の問題は、私は、オブジェクトごとに個別のクラスファイルを作成したということです

if (CGRectIntersectsRect(object1.frame, object2.frame)) {/*do something*/} 

を使用してこれを検出するであろう。私はclass1のobject1とclass2のobject2を持っているので、class2のobject1にアクセスすることはできません。

私はパラメータとしてオブジェクトを渡そうとしましたが、強いidエラーを受け取りました。したがって、オブジェクトは渡されることはできません。 class2のobject1.frameにどのようにアクセスできますか?私はまだ客観的に新しいです - C、私は任意のアドバイスをいただければ幸いです!おかげさまで、何か情報が必要な場合はお知らせください。

編集:あいまいさを残して申し訳ありませんが、私はあまり明確ではありませんでした。私はclass1.hでUIImageViewまたは "object1"を宣言し、class1.mファイル全体で使用されています。

私はclass2.hとclass2.mに別のUIImageView "object2"を宣言した別のクラスを持っています。 class2.mファイル中のある時点で、object1とobject2が交差しているかどうかを調べる必要があります。

+1

"class1にobject1があり、class2にobject2があるため、class2のobject1にアクセスできません。" < - これはあいまいです。 object1はclass1のインスタンスなのですか?そうですか?またはobject1はclass1のivarですか?または何? –

+0

フレームの種類は何ですか – WaaleedKhan

+0

必要なクラスインタフェースファイルを '#import'しましたか? – Costique

答えて

1

実際には両方とも画像ビューであるため、どちらも実際には互いに交差している必要はありません。より良いルートは、衝突を検出して処理する最初の2つのクラスのそれぞれに接続する第3のクラスを持つこと、または適切に設計されたプロトコルに従うUIImageViewの任意の2つのインスタンスを取るC関数を作成することです。オブジェクトを処理するように衝突を通知します。

このように、後で3番目または4番目のオブジェクトに関連する衝突を検出する必要があるときに、より簡単になります。どちらのオブジェクトも同じスーパービューを持つ必要がありますが、これは機能しません。

また、オブジェクトを渡すこともできますが、通常は参照渡しとなります。 object1がobject2に何かを伝えたり尋ねたりするためには、それを指すポインタがなければならず、同じことが逆に適用されます。

+0

遅れて申し訳ありません。これは私が聞きたいと思っていたものです。オブジェクトを直接渡してポインタを使わないようにしようとしていましたが、それは私のせいでした。私はあなたの提案theMikeSwanを取って、別の交差クラスを作成しています、アドバイスのおかげで! – Phas1c

関連する問題