簡體   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