2013-01-07 21 views
2

宏恒我知道如何定义使用C.常量和宏有没有什么办法来定义一个常量在Objective-C是这样的:类似的东西的状态栏高度

#define STATUSBAR_HEIGHT [UIApplication sharedApplication].statusBarFrame.size.height 
+1

当你尝试它时发生了什么? –

+3

记住,Objective-C *是* C ...任何有效的C也是有效的Objective-C – borrrden

回答

5

是那差不多了。比如你想打开一个网址,然后 -

#define OPEN_URL(urlString) [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]] 

utils.h文件将这个和导入头文件该宏可用。但是,在大型代码库中,每个文件都导入令人生气,您可以在AppName-Prefix.pch的#ifdef __OBJC__部分声明一个全局宏。现在你不需要在每个文件中导入...

+2

需要注意的是_value_不是常数。宏只是对源代码的重写。在运行时,所有这些方法调用仍然会发生,并且每次使用宏时宏的值可能会有所不同。 –

+0

+1,并且很好地包含全局宏信息。我在一个[不同的问题]中看到它(http://stackoverflow.com/questions/8202526/how-to-define-a-macro-globally-in-objective-c?rq=1),但有两个方法全球范围内的单一答案可能有助于未来的读者,特别是在这个问题上的标题。 – WhozCraig