iOS:如何定义公共方法?

iOS:如何定义公共方法?,ios,methods,public,Ios,Methods,Public,如何在每个viewcontroller类中定义可以从任何位置调用的方法 我有一个方法给我带来了一个json文件,我希望它是可重用的,因为我的应用程序上有几个json调用 你能帮我个忙吗?我相信你正在考虑一个静态方法,它将用“+”符号定义 然后,您可以首先使用类名调用它: [YourClassName yourFunctionName:5]; 如果您需要有一个函数来访问需要实例化的对象,那么您将需要执行单例模式 我加上第一个答案,因为这是一种创建(本质上)另一个对象的方法,可以从包含该对象的任何

如何在每个viewcontroller类中定义可以从任何位置调用的方法

我有一个方法给我带来了一个json文件,我希望它是可重用的,因为我的应用程序上有几个json调用


你能帮我个忙吗?

我相信你正在考虑一个静态方法,它将用“+”符号定义

然后,您可以首先使用类名调用它:

[YourClassName yourFunctionName:5];

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

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


还请记住,objective-c也只是c。您可以包含.c文件,这些文件只包含也可以调用的ANSI-c例程。

您可以通过一个类别添加它:

编辑

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

@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,您可以在那里放置任何方法并扩展所有UIViewController。bringJSON方法将可用于所有UIViewController及其子类。

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

例如:

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

 }

单身公鸡117是正确的。您指的是静态方法。请记住,Objective-C中的所有方法都是公共的。但是,您可以通过在类扩展中声明方法来“隐藏”方法或引起编译器警告。不过,它们并不是真正私有的。我明白了,我的类方法的问题是,我的返回总是会出错,因为它不能使用实例变量。有没有使用类变量的方法?关于单身汉,我想我得读一读。单例与协议不同?我来自前端,大约一个月前开始在xcode工作。所以做更复杂的事情有点难。非常感谢你们的帮助!您也可以始终实现C++对象。通过这种方式,您可以只提供具有函数访问权限的受保护/私有变量。XCODE确实有能力将C++对象编译成Objto-C代码。我将尝试寻找一些链接,但这里有一篇关于StackOverflow主题的帖子(没有示例代码)。如何在加载json时返回json如果我把它放在“dispatch\u get\u main\u queue”中,它会出错。太多了!你解决了我的问题!如果没有这个社区,你很难成为一名ios开发者。我很高兴这对你有所帮助。同样,我从社区中学到的东西比从书本或在线教程中学到的要多:)导入此.h文件的.m文件中如何调用它?有人能告诉我怎么做吗?另外,由于我看到了一些特定于json方法的代码,所以代码中的什么内容被准确地添加到了上面的.m文件中
 + (void) Name: (NSString  *) str{

 }