[英]Objective C - Call method from another class
我有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声明选择器'getFoo'
我确信我错过了一步,因为我对Objective C很新。我只是不确定我做错了什么。
对此的任何帮助都会很棒。
谢谢!
在geoMainViewController.h
您应该声明选择器是可见的:
-(NSString *)getFoo;
你在你的geoMainViewController.h
放了- (NSString *)getFoo
geoMainViewController.h
吗? 您必须通过.h文件使这些方法对对象外部可见,因此其他对象知道它们响应哪些选择器。 autoComplete是否每次都填写邮件?
#import <Foundation/Foundation.h>
@interface
{
}
@property (nonatomic,strong) ;
@property (nonatomic,strong) ;
@property (nonatomic, strong) ;
- (NSString *)getFoo
@end
编辑:(顺便说一句,你也可以让Foo成为一个属性)
你在头文件中声明了吗?
头文件包含.h文件中的所有函数声明,您只在类中包含.h文件。 所以这取决于.h文件。 .h文件将所有函数都作为.m文件。
希望它能帮到你。
您误解了如何使用视图控制器。 虽然您可以在技术上创建视图控制器的实例以调用其中一个方法,但您不应该这样做。 通常的方法是视图控制器是视图层次结构的一部分,当您有权访问该实例时,可以在其上调用方法。 你在这里缺少一些基本的东西。
我怀疑你的实际错误是一个missinh方法声明,但你有更大的问题需要先解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.