我有2个课程geoViewController
和geoMainViewController
我在geoMainViewController
中有一个名为getFoo
看起来像这样:
- (NSString *)getFoo
{
NSString* foo = @"This is foo";
return foo;
}
我正在尝试从getFoo
班级致电geoViewController
。
我的#import "geoMainViewController.h"
m文件中有geoViewController
。
我正在尝试实例化geoMainViewController
类并从getFoo
类中的viewDidLoad调用geoViewController
方法,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
geoMainViewController* mainVC = [[geoMainViewController alloc] init];
NSString* myFoo = [mainVC getFoo];
}
它似乎正在实例化geoMainViewController
类,但我在NSString* myFoo = [mainVC getFoo];
上收到错误
错误是 - 对于' geoMainViewController'没有可见的@interface;声明选择器' getFoo'
我确信我错过了一步,因为我对目标C很新。我只是不确定我做错了什么。
对此的任何帮助都会很棒。
谢谢!
答案 0 :(得分:5)
在geoMainViewController.h
中,您应该声明选择器可见:
-(NSString *)getFoo;
答案 1 :(得分:1)
您是否将- (NSString *)getFoo
放入geoMainViewController.h
?
您必须通过.h文件使这些方法对对象外部可见,因此其他对象知道它们响应哪些选择器。 autoComplete是否按机会填写了消息?
#import <Foundation/Foundation.h>
@interface
{
}
@property (nonatomic,strong) ;
@property (nonatomic,strong) ;
@property (nonatomic, strong) ;
- (NSString *)getFoo
@end
编辑:(顺便说一句,你也可以让Foo成为一个属性)
答案 2 :(得分:1)
您是否在头文件中声明了它?
头文件包含.h文件中的所有函数声明,并且您只在类中包含.h文件。所以这取决于.h文件。 .h文件将具有.m文件的所有功能。
希望它对你有所帮助。
答案 3 :(得分:0)
您误解了如何使用视图控制器。虽然您可以在技术上创建视图控制器的实例以调用其中一个方法,但您不应该这样做。通常的方法是视图控制器是视图层次结构的一部分,当您有权访问该实例时,可以在其上调用方法。你在这里缺少一些基本的东西。
你的实际错误是一个missinh方法声明,我怀疑,但你有更大的问题需要先解决。