创建“全球方法”

时间:2012-11-15 07:51:40

标签: objective-c

  

可能重复:
  How to create global functions in Objective-C

我很好奇如何在Objective C中创建任何类都可以使用的全局实用程序方法。

我能想到的简单而唯一的解决方案是简单地创建一个类,即称之为GlobalMethods,并创建一组类方法,以便在没有实例化此类的情况下使用它们。

这是一种明智有效的方法吗?关于方法的类型,它们可能是任何东西,例如我使用的自定义数学公式等等。

2 个答案:

答案 0 :(得分:1)

我使用这种确切的方法来提供我提供各种应用程序服务的全局CocoaUtil类。

但是,您可以简单地定义执行Objective-C事务的全局C函数;例如:

Util.h:

extern NSString *helloWorld(int i);

Util.m:

NSString *helloWorld(int i)
{
    return [NSString stringWithFormat:@"Hello World %d", i];
}

但是,我使用Objective-C类方法,因为它提供了更好的“命名空间”支持,ala C ++。

答案 1 :(得分:1)

有一些常用方法可以使一些代码在全球范围内可用。以下是一些Apple公共API的例子:

  • 在新类上创建类方法。这就是你的建议。示例:NSPropertyListSerializationNSJSONSerialization

  • 在某个适当的现有类上创建类方法。示例:UIKit使用类别将类方法添加到NSValue,例如valueWithCGRect:valueWithCGPoint:

  • 创建一个了解某些相关消息组的单例。示例:[UIApplication sharedApplication][NSFileManager defaultManager]

  • 创建普通的旧C函数。示例:UIImagePNGRepresentationUIRectFillNSLogNSStringFromCGPoint以及更多喘气。

  • 如果代码特别针对某个对象进行操作,则使用类别添加对象类的方法。示例:UIKit使用类别向sizeWithFont:添加drawAtPoint:withFont:NSString和相关方法。