4

私は2つのクラスがgeoViewControllerあり、geoMainViewController

geoMainViewController呼び出されたメソッドがありますgetFoo

次のようになります。

- (NSString *)getFoo
{

NSString* foo = @"This is foo";

return foo;

}

クラスgetFooから電話をかけようとしています。geoViewController

私は#import "geoMainViewController.h"geoViewControllerのmファイルにあります。

クラスをインスタンス化し、クラスの viewDidLoad から次のgeoMainViewControllerようにメソッドを呼び出そうとしています:getFoogeoViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    geoMainViewController* mainVC = [[geoMainViewController alloc] init];

    NSString* myFoo = [mainVC getFoo];    

}

geoMainViewControllerクラスを正常にインスタンス化しているようですが、エラーが発生していますNSString* myFoo = [mainVC getFoo];

エラーは次のとおりです-「geoMainViewController」の目に見える@interfaceがセレクター「getFoo」を宣言していません

私はObjective Cに非常に慣れていないため、ステップが欠落していると確信しています。何が間違っているのかわかりません。

これに関するヘルプは素晴らしいでしょう。

ありがとう!

4

4 に答える 4

6

geoMainViewController.hセレクターが表示されるように宣言する必要があります。

-(NSString *)getFoo;
于 2013-02-27T07:41:15.670 に答える
1

入れ- (NSString *)getFooましたgeoMainViewController.hか?これらのメソッドは、.h ファイルを介してオブジェクトの外部から見えるようにする必要があります。これにより、他のオブジェクトがどのセレクターに応答するかを知ることができます。オートコンプリートはチャンスごとにメッセージを埋めましたか?

#import <Foundation/Foundation.h>

@interface 
{

}

@property (nonatomic,strong) ;
@property (nonatomic,strong) ;
@property (nonatomic, strong) ;

- (NSString *)getFoo
@end

EDIT:(ちなみにFooをプロパティにすることもできます)

于 2013-02-27T07:43:34.100 に答える
1

ヘッダーファイルで宣言しましたか?

ヘッダー ファイルには .h ファイル内のすべての関数宣言が含まれており、クラスには .h ファイルのみを含めます。したがって、.h ファイルに依存します。.h ファイルには、.m ファイルとしてのすべての機能が含まれます。

お役に立てば幸いです。

于 2013-02-27T07:44:24.327 に答える
0

ビューコントローラの使用方法を誤解しています。ビューコントローラのインスタンスを技術的に作成して、そのメソッドの1つを呼び出すことはできますが、そうすべきではありません。通常のアプローチでは、ビューコントローラはビ​​ュー階層の一部であり、そのインスタンスにアクセスできるときにメソッドを呼び出すことができます。ここで基本的な何かが欠けています。

あなたの実際のエラーはmissinhメソッド宣言です、私は疑うでしょう、しかしあなたは最初に解決すべきより大きな問題を抱えています。

于 2013-02-27T07:45:16.790 に答える