2012-08-31 103 views
1

game.h文件使用接口聲明

@interface ViewController : UIViewController 
{ 
    UIImageView * player; 
} 

@end 

game.m

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

player.m

我想InitPlayer在這個文件中,而不是但要聲明的遊戲。 h文件。

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

} 

這可能嗎?

感謝

+0

是不是已經聲明在.h文件? – 2012-08-31 22:09:20

+0

當我嘗試在第二個文件中使用時,出現錯誤消息「使用未聲明的標識符」。 – user1434087

回答

0

只是用這個來聲明類的公共接口的一部分-InitPlayer

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

- (void)InitPlayer; 

@end 

然後你把你的-InitPlayer實施ViewController.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 

那麼你可以告訴玩家從0123初始化視圖,假設它本身沒有控制器。

(注:objc方法名通常以小寫字符開始爲好,它通常是隱藏這個初始化的東西是一個好主意,從你的客戶。)

+0

爲了清晰起見,我編輯了問題。 – user1434087

+0

@ user1434087展開並將在一分鐘後發佈另一個更新... – justin

+0

謝謝!現在已經很清楚了,我會更改我的代碼以反映這一點。 – user1434087