2012-11-15 77 views
1

可能重複:
How to create global functions in Objective-C創建「全球方法」

我很好奇它是如何通常做法創建目標C任何類可以使用全局實用方法。

我能想到的簡單而唯一的解決方案是簡單地創建一個類,即將其稱爲GlobalMethods,並創建一堆類方法,以便在沒有此類的情況下可以使用它們實例化。

這是一個明智而有效的方法嗎?關於方法的類型,它們可能是任何東西,例如我使用的自定義數學公式等。

回答

1

有幾種常見的方法可以使某些代碼在全局範圍內可用。這裏有一些,從蘋果公司的公共API的例子:

  • 創建一個新的類類方法。這是你的建議。示例:NSPropertyListSerialization,NSJSONSerialization

  • 在一些適當的現有類上創建類方法。示例:UIKit使用類別將類方法添加到NSValue,例如valueWithCGRect:valueWithCGPoint:

  • 創建一個能夠理解某組相關消息的單例。示例:[UIApplication sharedApplication][NSFileManager defaultManager]

  • 創建普通的舊C函數。示例:UIImagePNGRepresentationUIRectFill,NSLog,NSStringFromCGPoint,以及更多的pantload。

  • 如果代碼特別對某個對象進行操作,請使用類別爲該對象的類添加一個方法。示例:UIKitsizeWithFont:,drawAtPoint:withFont:和相關方法添加到NSString使用的類別。

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類的方法,因爲它提供了更好的 「命名空間」 的支持,阿拉C++ 。