4

我有 2 节课geoViewControllergeoMainViewController

我在被geoMainViewController调用中有一个方法getFoo

它看起来像这样:

- (NSString *)getFoo
{

NSString* foo = @"This is foo";

return foo;

}

我正试图getFoogeoViewController课堂上打电话。

#import "geoMainViewController.h"在我的geoViewControllerm 文件中。

我正在尝试实例化该类并从我的类中的 viewDidLoadgeoMainViewController调用该方法,如下所示: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

编辑:(顺便说一句,您也可以将 Foo 设为属性)

于 2013-02-27T07:43:34.100 回答
1

你在头文件中声明了吗?

头文件包含 .h 文件中的所有函数声明,您只在类中包含 .h 文件。所以它取决于 .h 文件。.h 文件将具有 .m 文件的所有功能。

希望它可以帮助你。

于 2013-02-27T07:44:24.327 回答
0

您误解了如何使用视图控制器。虽然您可以在技术上创建视图控制器的实例以调用其方法之一,但您不应该这样做。通常的方法是视图控制器是视图层次结构的一部分,当您有权访问该实例时,您可以在其上调用方法。你在这里缺少一些基本的东西。

我怀疑你的实际错误是一个missinh方法声明,但你首先要解决更大的问题。

于 2013-02-27T07:45:16.790 回答