2009-07-03 6 views
0

私はこの2つのメッセージを取得しています...」のように引数警告は

第一ここ

:第2回ここに

//GridView.m 
#import "GridView.h" 
#import "MainView.h" 

@implementation GridView 

-(IBAction)switchToNoGridView { 
    [mainView switchToNoGridView]; 
} 

@end 

警告: 'MAINVIEW -goBack '' に応答しないこと'一致するメソッドのシグネチャなしのメッセージは、「ID」を返して受け入れると想定されます「...」引数これで

として:

//NoGridView.m 
#import "NoGridView.h" 
#import "MainView.h" 

@implementation NoGridView 

-(IBAction)goBack { 
    [mainView goBack]; 
} 

@end 

これらの警告を回避する方法?

答えて

1

MainViewのクラスインターフェイスでswitchToNoGridViewgoBackを宣言しましたか?

この警告は、メソッドを呼び出すインスタンスのクラスでメソッドシグネチャが見つかりませんでした。 Objective-Cでのメッセージのディスパッチは実行時に行われるため、これは許可されますが、警告が表示されます。

0

あなたのコードからはわかりませんが、2つのエラーのいずれかが発生していると思います。

MainViewクラスの宣言でswitchToNoGridViewまたはgoBackというメソッドを宣言していません。 Xcodeのオブジェクトがメソッドに応答することを知っているために、あなたはこのように、クラスのヘッダーファイル内の定義を含める必要があります:

@interface MainView : ParentObject { 
    // instance variables 
} 
// properties 
- (void)switchToNoGridView; 
- (void)goBack; 
@end

これは、あなたが実際にはもちろん、(void)としてそれらを宣言したいと仮定し - 彼らができます戻り値を持っていますが、コード内の呼び出しの結果で何もしないので、私はそれらが無効であると仮定しています。または:

あなたはオブジェクトをmainViewではなく、クラスをMainViewと呼ぶことにしました。 GridView.hのプロパティやインスタンス変数の定義は表示されませんし、MainView.hの現在のメソッド宣言も表示されませんので、MainViewで静的メソッド+(void)switchToNoGridView+(void)goBackが宣言されている可能性がありますMainViewのインスタンスmainViewで呼び出します。たとえば:

@interface AClass : NSObject { } 
+ (void)doSomething; 
@end 

@implementation AClass 
+ (void)doSomething { 
    NSLog(@"Doing something"); 
} 
@end
#import "AClass.h" 
@interface AnotherClass : NSObject { 
    AClass *aClass; 
} 
@property(nonatomic,retain) AClass *aClass; 
- (void)doSomethingElse; 
@end 

@implementation AnotherClass 
- (void)doSomethingElse { 
    [aClass doSomething]; // This will break at runtime 
    [AClass doSomething]; // but this won't 
} 
@end 

は基本的に、それはあなたがオブジェクトのメソッドを持つクラスのメソッドを混同してきたことが可能です。どちらの方法でも、MainViewヘッダーファイルで適切なメソッド定義を確認する必要があります。

+0

これは私のMAINVIEWです: // MAINVIEW の#import "MainView.h" の#import "GridView.h" の#import「NoGridView。H」 @implementationのMAINVIEW - (ボイド)awakeFromNib { \t [自己addSubview:GridViewの]; \t [自己addSubview:InfoViewの]; } - (ボイド)switchToNoGridView { \t [GridViewのremoveFromSuperview] ; \t [自己addSubview:nogridView];} - (ボイド)GOBACK { \t [nogridView removeFromSuperview]; \t [自己addSubview:GridViewの]; } @end –