0

我已经查阅了大约十几个不同的页面,包括在跳过方法时如何从其他视图和实例调用方法,但没有得到答案。

我将在这里彻底。两个相关的类:

演讲者查看

获取数据

GetData 就在那里,因为我需要从六个不同的类中调用该方法,最好只编写一次。

这是GetData.h:

#import <UIKit/UIKit.h>

@interface GetData : UIViewController
-(NSArray *)getTableArray:(NSString *)section :(NSString *)entity;
@end

这是GetData.m:

@interface GetData (){

    NSArray *tableData;
    NSArray *titleData;
    NSArray *splitData;

}

@end

@implementation GetData

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(NSArray *)getTableArray:(NSString *)section :(NSString *)entity{
//Code omitted. Shouldn't really have anything to do with why the method is being skipped.
}

@end

下面是我在 SpeakersView.m 中调用该方法的方式:

GetData *GD;

menu_List = [GD getTableArray:@"Speakers" :@"John Smith"];

建议?我应该提到我从不同的类中以完全相同的方式调用其他方法没有问题。

4

2 回答 2

1

GetData *GD;不初始化UIViewController. 那时它为零,所以你不能在它上面调用方法。

尝试:

GetData *GD = [[GetData alloc] init];

另外,为什么是GetData一个UIViewController?使它成为一个NSObject,如果您只是将它用于该方法,则不需要具有所有体积的整个视图控制器。

于 2013-08-08T19:24:28.690 回答
0

调用继承 UIViewController 的类“GetData”清楚地表明了一个巨大的概念问题。控制器是一个用模型(在 MVC 模式中)提供其视图的类。它不是实用程序类。

在您的示例中,您也没有实例化控制器。

于 2013-08-08T19:28:24.350 回答