我很好奇它是如何通常做法創建目標C任何類可以使用全局實用方法。
我能想到的簡單而唯一的解決方案是簡單地創建一個類,即將其稱爲GlobalMethods,並創建一堆類方法,以便在沒有此類的情況下可以使用它們實例化。
這是一個明智而有效的方法嗎?關於方法的類型,它們可能是任何東西,例如我使用的自定義數學公式等。
我很好奇它是如何通常做法創建目標C任何類可以使用全局實用方法。
我能想到的簡單而唯一的解決方案是簡單地創建一個類,即將其稱爲GlobalMethods,並創建一堆類方法,以便在沒有此類的情況下可以使用它們實例化。
這是一個明智而有效的方法嗎?關於方法的類型,它們可能是任何東西,例如我使用的自定義數學公式等。
有幾種常見的方法可以使某些代碼在全局範圍內可用。這裏有一些,從蘋果公司的公共API的例子:
創建一個新的類類方法。這是你的建議。示例:NSPropertyListSerialization
,NSJSONSerialization
。
在一些適當的現有類上創建類方法。示例:UIKit使用類別將類方法添加到NSValue
,例如valueWithCGRect:
和valueWithCGPoint:
。
創建一個能夠理解某組相關消息的單例。示例:[UIApplication sharedApplication]
,[NSFileManager defaultManager]
。
創建普通的舊C函數。示例:UIImagePNGRepresentation
,UIRectFill
,NSLog
,NSStringFromCGPoint
,以及更多的pantload。
如果代碼特別對某個對象進行操作,請使用類別爲該對象的類添加一個方法。示例:UIKit
將sizeWithFont:
,drawAtPoint:withFont:
和相關方法添加到NSString
使用的類別。
我使用確切的方法來提供我的全球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類的方法,因爲它提供了更好的 「命名空間」 的支持,阿拉C++ 。