我想创建一个包含我将多次使用的方法的文件。
让我们说在Javascript中我想创建一个“方法”文件,我将创建一个名为functions.js的文件,并在其上编写我的函数,如下所示
functions.js:
function myAlert(message){
alert(message);
}
如果我在HTML头中包含此文件,只要我包含了functions.js,我就可以从任何地方调用mAlert()
有没有办法在Objective-C中做类似的事情?
应该创建哪个文件,在哪里/如何包含它们,以及如何调用这些方法?
答案 0 :(得分:2)
你有几个选择。
类可以包含类方法,这些类方法由类本身而不是类的实例执行。您在开头声明了一个带有“+”而不是“ - ”的类方法:
+ (void) aClassMethod;
然后使用类的名称调用它:
[MyClass aClassMethod];
只要给定文件导入了MyClass的标头,就可以调用该类方法。
这种方法的问题在于,因为它是一个类方法,所以它无权访问在实例变量中存储状态数据。
另一个选择是让你的“方法”类成为单例类。然后,您可以在任何地方调用单例中的实例方法:
[[Methods sharedMethods] myAlertWithString: @"message"];
在这里搜索关于Cocoa中单例设计模式的SO。有很多例子。
答案 1 :(得分:2)
我们可以使用单例模式。
·H
@interface CommonFunctions : NSObject
+(CommonFunctions)shareInstance;
-(void)someFunction:(Class*)parameter;
...
@end
的.m
+(CommonFunctions *)shareInstance {
static CommonFunctions *_shareInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[RESTClient alloc] init]];
});
return _shareInstance;
}
-(void)someFunction:(Class*)parameter
{
}
然后我们就像这样调用这个函数:
[[CommonFunctions shareInstance] someFunction:parameter]
答案 2 :(得分:1)
您可以在任何您想要的项目中使用c代码,因此可以使用单个.cpp文件和.h文件来创建全局可访问的函数。
我个人有一个课程,我设置了我的全局方法。
·H
@interface CommonFunctions : NSObject
+(void)someFunction:(Class*)parameter;
...
@end
的.m
@implementation CommonFunctions
+(void)someFunction:(Class*)parameter
{
//Do something commonly used with this parameter
}
@end
然后我就把这个函数称为:
[CommonFunctions someFunction:parameter];
答案 3 :(得分:0)
在Objective-C中,您不必使用类。只需使用普通的旧C,它就可以正常工作。制作一个无意义的课程只是为了举行大杂烩的功能是糟糕的风格。
请记住,您可以向现有类添加方法。如果你想要一个可以属于NSDictionary的方法,你只需将它添加到类中。