iOS:如何定义公共方法?

时间:2012-06-01 15:36:24

标签: ios methods public

如何在每个viewcontroller类中定义一个可以从任何地方调用的方法?

我有一个方法可以为我带来一个json文件,我希望它可以重复使用,因为我的应用程序上有几个json调用。

你能帮助我吗?

4 个答案:

答案 0 :(得分:6)

您可以通过类别添加它:

修改

在.h文件中创建一个新的.h .m文件对:

@interface UIViewController(JSON)
-(void) bringJSON;
-(void) fetchData:(NSData*) data;


@ end

然后在.m文件中:

@implementation UIViewController(JSON)

-(void) bringJSON {

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

[NSData dataWithContentsOfURL:yourURL];

[self performSelectorOnMainThread:@selector(fetchData:)
withObject:data waitUntilDone:YES];

});

}


-(void) fetchData:(NSData*) data {

//parse - update etc.

}


@end

我假设您将返回NSArray,您可以在其中放置任何方法并扩展所有UIViewControllers。方法bringJSON将可用于所有UIViewControllers及其子类。

答案 1 :(得分:4)

我相信您正在考虑使用“+”符号定义的静态方法。

+ (String) yourFunctionName:(NSInteger)someValue .....

然后你可以先用类名调用它:

[YourClassName yourFunctionName:5];

如果您需要一个访问需要实例化的对象的函数,那么您将需要执行单例模式。

答案 2 :(得分:3)

在方法的返回类型之前使用+号。

例如:

 + (void) Name: (NSString  *) str{

 }

答案 3 :(得分:2)

我选择了第一个答案,因为它是一种创建(基本上)另一个对象的方法,该方法可以从包含该对象的任何文件中调用。

还要记住,objective-c也只是C.你可以包含.c文件,它们只包含可以被调用的ANSI-C例程。