2009-07-19 7 views
3

私はiPhone用のObjective-Cを頭に入れようとしています。私のアプリはコンパイルされていて、これまでのところうまく動いていますが、私が取り除くことができないという警告をコンパイラーが得ています。XCodeコンパイラの警告: 'foo'が-barに応答しない可能性があります

1クラスのヘッダー:(切り取ら)

@interface PersonDetailViewController : UIViewController { 
    NSDictionary *person; 
} 
@property (retain) NSDictionary *person; 
@end 

このクラスの実装:(も切り取ら)

#import "PersonDetailViewController.h" 
@implementation PersonDetailViewController 
@synthesize person; 
@end 

私はPersonListViewControllerにPersonDetailViewControllerのインスタンスを作成し、呼んでいる:

#import "PersonListViewController.h" 
#import "Person.h" 
#import "PersonDetailViewController.h" 

@implementation PersonListViewController 
- (IBAction)myMethod:(id)sender { 
    NSDictionary *person = [[Person alloc] initFromTestArray:[sender tag]]; 
    [personDetailViewController setPerson:person]; 
    [[personDetailViewController person] describe]; 
} 
@end 

そして、私は次のように伝えています。

warning: 'UIViewController' may not respond to '-setPerson' (Messages without a matching method signature will be assumed to return 'id' and accept '...' as arguments.) 
warning: 'UIViewController' may not respond to '-person' 

私はすべてのGoogleの外だ、それが実際にうまく反応しないが、私は、コンパイラが応答するかを知っているだろうように、私のヘッダーを整理する方法を見つけ出すことはできません...

...希望私は十分な情報を与えて、誰かが助けることができます。

ありがとう、ヒープ!

答えて

4

personDetailViewControllerさんはUIViewControllerと表示されていますか?コントローラーを明示的にキャストすることができます。

[(PersonDetailViewController*)personDetailViewController setPerson:person]; 

しかし、これは醜いです。 ヘッダーにpersonDetailViewControllerを単にPersonDetailViewControllerとして宣言する方が良いでしょう。私はそれが正しいと思う、私は少し長い名前のすべてに悩まされた:)

+0

Aha!はい。私は一般的なUIViewControllerとしてpersonDetailViewControllerをキャストしていたため、コンパイラは合成されたセッターとゲッタメソッドを探すことを知らなかった! micmooの最初の点については、それは私が大胆で盲目だった。 これはすごく洗練されているように見えますが、エラーなくビルドできます!どうもありがとう! – sinissaar

2

私は少し混乱しています... は、なぜあなたはこれを行うだろう:NSDictionaryのすべき

NSDictionary *person = [[Person alloc] initFromTestArray:[sender tag]]; 

あなた宣言する人が、しかし はない必要があります... Personクラスをinit'ingていますそれは私が@property &のsynthesizeに気付かなかったので、あなたが正しかった、私の悪い...受け入れ答えは、あなたがLoたものです

Person *person = [[Person alloc] initFromTestArray:[sender tag]]; 

編集 こと〜のために!

+2

私は最初の点に同意するが、 '人は'彼がヘッダーで宣言し、実装で合成プロパティです。 –

+0

ああ良い点。 @synthesizeについて忘れました...私は自分の投稿を編集します。 – micmoo

関連する問題