繁体   English   中英

Objective C - 来自另一个类的Call方法

[英]Objective C - Call method from another class

我有2个类geoViewControllergeoMainViewController

我在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM