2013-05-16 116 views
2

從初始化開始,默認值BOOL類型爲NO,合成時是否可以將該值更改爲YES將BOOL類型的默認值設置爲YES

這樣它的值將在下次交替分配。

+3

那不是你的init()方法是什麼? – borrrden

+0

'#define YES(BOOL)0' :) '#define NO(BOOL)1'由默認實例填充0 – Buntylm

+4

@BuntyMadan請不要這麼做!這將使一個糟糕的調試會話... –

回答

6
-(id)init{ 
    if ((self = [super init])) 
    { 
     //This is where you are supposed to initialise anythin you need 

     xyz = YES; 
    } 
    return self; 
} 
0

可以在viewDidLoad方法做

- (void)viewDidLoad 
{ 
    xyz = YES; 
} 
+0

viewDidLoad(和viewDidUnload)可以在UIViewController的生命週期中多次調用。這是危險的建議。 – grahamparks

+0

@grahamparks請舉一些例子來支持你說的話。我好奇。 – rptwsthi

+0

是的,我也想知道它 –

0

試試這個:

在.h文件中

BOOL flag; 

在.m文件

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     flag = YES; 
    } 
    return self; 
} 
1
BOOL myVar; 

@property BOOL myVar; 

- (void)viewDidLoad 
{ 
myVar=True; 
} 
+1

你的例子創建/設置一個名爲'myVar'的全局變量,而不是'@ property'。 –

0

沒有默認值,如果你寫

-(void)somemethod { 
    BOOL x; //no default value 
    } 

現在X沒有默認值,併爲實例,用0填充在init將被初始化爲NO。當init初始化時需要做anthor方法。像

-(id)init{ if ((self = [super init])) { x = YES; } }

或一些上ViewDidLoad x = YES;

+0

'-somemethod'中的'BOOL x'不會被初始化爲NO,它將包含調用該方法時棧中的垃圾數據。 –

+0

@一二三謝謝,但據我所知,'x'將'init'設爲0.有一些與此有關的重要參考。 – Buntylm

+0

只有'static'變量和實例變量的存儲將爲零。 –