从初始化开始,BOOL
类型的默认值为NO
,在合成时是否可能将其值更改为YES
。
这样它的值就可以交替分配。
-(id)init{
if ((self = [super init]))
{
//This is where you are supposed to initialise anythin you need
xyz = YES;
}
return self;
}
BOOL myVar;
@property BOOL myVar;
- (void)viewDidLoad
{
myVar=True;
}
myVar
的全局变量,而不是@property
。 - 一二三你可以在viewDidLoad方法中完成它
- (void)viewDidLoad
{
xyz = YES;
}
BOOL flag;
在 .m 文件中
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
flag = YES;
}
return self;
}
如果您没有编写代码,则不会有默认值。
-(void)somemethod {
BOOL x; //no default value
}
现在x没有默认值,将在初始化时被初始化为NO,因为实例在init时填充为0。 所以需要在初始化时进行另一种方式。例如:
-(id)init{
if ((self = [super init]))
{
x = YES;
}
}
或者在ViewDidLoad
中进行一些操作
x = YES;
-somemethod
中,您的 BOOL x
不会被初始化为 NO
,它将包含在调用该方法时堆栈上存在的任何垃圾数据。 - 一二三x
会被初始化为0。有一些重要的参考资料与此相关。 - Buntylmstatic
变量和实例变量的存储空间会被清零。 - 一二三
#define YES (BOOL)0
:)#define NO (BOOL)1
因为默认实例填充为0。 - Buntylm