我很好奇如何在Objective C中创建任何类都可以使用的全局实用程序方法。
我能想到的简单而唯一的解决方案是简单地创建一个类,即称之为GlobalMethods,并创建一组类方法,以便在没有实例化此类的情况下使用它们。
这是一种明智有效的方法吗?关于方法的类型,它们可能是任何东西,例如我使用的自定义数学公式等等。
答案 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的例子:
在新类上创建类方法。这就是你的建议。示例:NSPropertyListSerialization
,NSJSONSerialization
。
在某个适当的现有类上创建类方法。示例:UIKit使用类别将类方法添加到NSValue
,例如valueWithCGRect:
和valueWithCGPoint:
。
创建一个了解某些相关消息组的单例。示例:[UIApplication sharedApplication]
,[NSFileManager defaultManager]
。
创建普通的旧C函数。示例:UIImagePNGRepresentation
,UIRectFill
,NSLog
,NSStringFromCGPoint
以及更多喘气。
如果代码特别针对某个对象进行操作,则使用类别添加对象类的方法。示例:UIKit
使用类别向sizeWithFont:
添加drawAtPoint:withFont:
,NSString
和相关方法。