这可能是一个愚蠢的问题,但在我的应用程序中,需要将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
变量。这甚至可能吗?
为什么我这样做?:
我有一个UIView,它有3个3x3网格布局的子视图(我称之为图块)。
我有两个BOOL
值startTile
和endTile
。我需要根据触摸来设置这些值!!!
我正在使用touches-Began/Moved/Ended
来检测这些视图的触摸
当触摸开始时,我需要计算触摸是否在tile1或tile2 .....中
所以实际代码:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// calculate touch point and based on it set the bool value
[self sendBoolVariable:startTile];
//startTile is selected, so change its color
// lock other tiles
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
//if touches came to tile 2 region
[self sendBoolVariable:b2]; //b2 is BOOL variable for tile2
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self sendBoolVariable:endTile];
//end tile is selcted too
//at this point both start tile and tile are selected
//now do the animation for the start tile and end tile
//other tiles are still in locked state
}
如您所见,我需要调用相同的方法但需要发送三个不同的bool变量!!!!
答案 0 :(得分:5)
不是100%确定这是否是您想要的,但您可以这样做:
[self sendBoolVariable:&b1];
- (void)sendBoolVariable:(BOOL *)value {
*value = YES; //b1 is now YES
}
答案 1 :(得分:0)
在您的澄清之后,如何:
if(context.activeView){
removeAnimationClasses(context.activeView, fadeOnly);
context.child.classList.add('slideInLeft');
}
BOOL只是一个签名的字符。 如果您尝试更改属性的值,请尝试self.variable = YES或_variable = YES
对于以下内容,我还要感谢barry wark:
从objc.h中的定义:
BOOL a = YES;
a = [self modifyBoolValueBasedOnItself:a]; // the method takes the BOOL as a parameter and returns the modified value
答案 2 :(得分:0)
将BOOL b1传递给方法时:
[self sendBoolVariable:b1];
“value”的范围仅限于该方法。所以当你设置value = YES:
时-(void)sendBoolVariable:(BOOL) value{
value=YES;
您没有更改范围更广的值ivar“b1”。