1

game.h ファイル

@interface ViewController : UIViewController
{
  UIImageView * player;
}

@end

ゲーム.m

-(void)InitPlayer
{    
  player.tag = 0;
}

player.m

代わりにこのファイルに InitPlayer が必要ですが、game.h ファイルで宣言を保持します。

- (void)InitPlayer
{
  player.tag = 0;  // access UIImageView *player;

}

これは可能ですか?

ありがとう

4

1 に答える 1

0

これを使用して、クラスのパブリックインターフェイスの一部を宣言し-InitPlayerます。

@interface ViewController : UIViewController
{
@private
  UIImageView * player;
}

- (void)InitPlayer;

@end

次に、実装を-InitPlayerViewController.mに保持します。ここには、それが存在する必要があります。@interfaceメソッドの実装をブロック内に配置することはできません。

他の言語を使用している場合は、objcでのディスパッチが動的であることを知っておく必要があります。ヘッダーに定義を配置しても(可能な場合)、インライン化/最適化は行われません。

明確化された質問への回答:

では、これを実行します。

Player.h

@interface Player : NSObject
- (void)prepareUIImageView:(UIImageView *)pImageView; // << could actually be a class method in this case
@end

Player.m

@implementation Player

- (void)prepareUIImageView:(UIImageView *)pImageView
{
    pImageView.tag = 0;
}

@end

ViewController次に、コントローラー自体がないと仮定して、からビューを初期化するようにプレーヤーに指示できます。

(注:objcメソッド名は通常、小文字で始まります。同様に、通常、この初期化のものをクライアントから隠すことをお勧めします)

于 2012-08-31T22:20:22.213 に答える