使用常用方法创建一个类

时间:2014-02-17 21:19:03

标签: ios objective-c scope

我想创建一个包含我将多次使用的方法的文件。

让我们说在Javascript中我想创建一个“方法”文件,我将创建一个名为functions.js的文件,并在其上编写我的函数,如下所示

functions.js:

function myAlert(message){
      alert(message);
}

如果我在HTML头中包含此文件,只要我包含了functions.js,我就可以从任何地方调用mAlert()

有没有办法在Objective-C中做类似的事情?

应该创建哪个文件,在哪里/如何包含它们,以及如何调用这些方法?

4 个答案:

答案 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的方法,你只需将它添加到类中。