[英]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.