Objective C – 从另一个类中调用方法
我有2个类geoViewController
和geoMainViewController
我在geoMainViewController
有一个名为getFoo
它看起来像这样:
- (NSString *)getFoo { NSString* foo = @"This is foo"; return foo; }
我想从geoViewController
类调用getFoo
。
我在我的geoViewController
m文件中有#import "geoMainViewController.h"
。
我想实例化geoMainViewController
类,并从我的geoViewController
类中的viewDidLoad像这样调用getFoo
方法:
- (void)viewDidLoad { [super viewDidLoad]; geoMainViewController* mainVC = [[geoMainViewController alloc] init]; NSString* myFoo = [mainVC getFoo]; }
它似乎是实例geoMainViewController
类罚款,但我得到NSString* myFoo = [mainVC getFoo];
错误NSString* myFoo = [mainVC getFoo];
错误是 – “geoMainViewController”没有可见的@interface声明select器“getFoo”
我相信我错过了一个步骤,因为我对Objective C非常陌生。我只是不确定我做错了什么。
任何帮助,这将是伟大的。
谢谢!
在你的geoMainViewController.h
你应该声明select器是可见的:
-(NSString *)getFoo;
你把- (NSString *)getFoo
在你的geoMainViewController.h
? 您必须通过.h文件使这些方法在对象的外部可见,以便其他对象知道它们响应哪个select器。 autoComplete是否填充每个机会的消息?
#import <Foundation/Foundation.h> @interface { } @property (nonatomic,strong) ; @property (nonatomic,strong) ; @property (nonatomic, strong) ; - (NSString *)getFoo @end
编辑:(你也可以让Foo一个属性的方式)
你在头文件中声明了吗?
头文件包含.h文件中的所有函数声明,并且只将.h文件包含在您的类中。 所以这取决于.h文件。 .h文件将具有作为.m文件的所有function。
希望它可以帮助你。
你误解了如何使用视图控制器。 虽然你可以在技术上创build一个视图控制器的实例来调用它的一个方法,但你不应该这样做。 通常的做法是视图控制器是视图层次结构的一部分,当有权访问该实例时,可以调用它。 你在这里失去了一些根本
你真正的错误是一个missinh方法声明,我会怀疑,但你有更大的问题要解决。