2015-11-13 44 views
0

這可能是一個愚蠢的問題,但在我的應用程序將需要傳遞一個布爾變量的方法。如何在Objective-C中傳遞BOOL變量作爲參數?

比方說,我有10 BOOL變量聲明爲b1,b2.....b10

我可以簡單地用下面的代碼發送BOOL值作爲參數:

[self sendBoolValue:YES];  

    -(void)sendBoolValue:(BOOL) value{ 
      b1=value; 
      //now b1 will be YES 
    } 

現在我需要的是一些東西,做到這一點:

[self sendBoolVariable:b1];  //I tried sending &b1, but it didnt work out 

    -(void)sendBoolVariable:(BOOL) value{ 
      value=YES; //trying to set b1 to YES 
      //b1 is still NO 
    } 

我不能去送BOOL變量。這甚至可能嗎?

爲什麼我這樣做?:

我有9子視圖(我稱這些瓷磚)在一個3x3的網格佈局一個UIView。

我有兩個BOOLstartTileendTile。我需要根據觸摸設置這些值!

我使用touches-Began/Moved/Ended來檢測這些意見

當觸摸開始,我需要計算觸摸是否在tile1或tile2觸摸.....

所以實際的代碼:你可以看到,我需要調用相同的方法,但需要發送三個不同的布爾變量!

+1

你爲什麼試圖用s方法簡單地將BOOL變量設置爲YES或NO? – rmaddy

+0

有一種情況,我經常修改從b1到b10的布爾值。所以我寫了一個方法,根據b1 ... b10值執行一些更改。它包含一個有10個開關的statemnt。每個案例執行與觸摸CGPOINT !!!!有關的工作。我需要用不同的變量在不同點調用相同的方法! –

+0

所以我沒有使用多種方法,而是使用了一種方法,並且想要將變量傳遞給該方法 –

回答

4

不是100%肯定,如果這是你想要的,但你可以這樣做:

[self sendBoolVariable:&b1]; 

- (void)sendBoolVariable:(BOOL *)value { 
    *value = YES; //b1 is now YES   
} 
+0

是的,這正是我需要的! –

+0

@ Mr.T這是我在原問題下的原始評論。爲什麼你需要一個這樣的方法?這段代碼可以用'b1 = YES;'代替。 – rmaddy

+0

你是對的maddy,代碼可以用b1 = YES取代!但在某些時候,我需要有b2 = YES,廣告在某些時候我需要有b3 = YES,並且在某些時候我需要有b4 = YES !!!!!所以我需要發送變量到這個方法,並使其成爲!其他代碼行應該保持相同! :) @rmaddy –

0

按照你澄清,怎麼樣:

BOOL a = YES; 
a = [self modifyBoolValueBasedOnItself:a]; // the method takes the BOOL as a parameter and returns the modified value 

的BOOL只是一個符號字符。 如果你想改變一個屬性的值,嘗試self.variable = YES或_variable = YES

而且榮譽給barry wark以下:

從objc.h定義:

typedef signed char  BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used. 
#define OBJC_BOOL_DEFINED 
#define YES    (BOOL)1 
#define NO    (BOOL)0 
0

當您通過BOOL B1的方法:

[self sendBoolVariable:b1]; 

「值」的範圍僅限於該方法。所以當你設置value = YES時:

-(void)sendBoolVariable:(BOOL) value{ 
     value=YES; 

你沒有改變範圍更廣的範圍ivar「b1」的值。

相關問題