我想定义一些变量,我将在视图控制器中使用这些变量来设置字体大小,具体取决于用户是在iphone还是ipad上。到目前为止,我可以定义一个全局浮动没问题。但是,我无法在我的文件中包含任何条件语句。这很好用:
.h文件:
#import <Foundation/Foundation.h>
@interface GlobalDeclarations : NSObject
extern float MyGlobalVariable;
@end
.m文件:
#import "GlobalDeclarations.h"
@implementation GlobalDeclarations
float MyGlobalVariable = 0.0f;
@end
但是我无法修改我的.m文件以包含任何if语句 - 我总是得到同样的错误:
"expected idenitifer or ')'
例如,此版本的.m文件会产生上述错误:
#import "GlobalDeclarations.h"
@implementation GlobalDeclarations
float MyGlobalVariable = 0.0f;
if(MyGlobalVariable > 2.0f)
{
NSLog(@"inside if statement");
}
@end
即使我只是写了if(TRUE)......
之类的东西,我也会收到错误如何在这样的附件中有条件地定义全局变量? if语句有什么问题?感谢您的任何建议。
答案 0 :(得分:0)
对于变量,您只能将声明和有限的初始化表达式作为文件级别。如果您需要更复杂的初始化,则必须将代码放在方法中,而Objective-C支持方法+ initialize
以进行类范围的设置。
将您的代码重写为:
#import "GlobalDeclarations.h"
@implementation GlobalDeclarations
float MyGlobalVariable = 0.0f;
+ initialize
{
if(MyGlobalVariable < 2.0f)
{
NSLog(@"inside if statement");
}
}
@end
在第一次使用该类之前,将调用+ initialize
方法。
注意:对于更加模糊的情况,还有一个+ load
方法甚至比+ initialize
更早被调用,并且有一些属性可用于标记以类似方式调用的任何函数。