Iphone 块声明的变量是否在外部可见?
如果我在一个块内声明一个变量(见下文),有没有办法指定它在块外可见(如果需要)Iphone 块声明的变量是否在外部可见?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,如果我在一个块内声明一个变量(见下文),有没有办法指定它在块外可见(如果需要) if(turbine_RPM > 0) { int intResult = [sensorNumber:1]; NSNumber *result = [NSNumber numberWithInt:intResult]; } return result; 还是仅仅在块范围之外声明 NSNumber *result = nil; if(turbine_RPM > 0) { int
if(turbine_RPM > 0) {
int intResult = [sensorNumber:1];
NSNumber *result = [NSNumber numberWithInt:intResult];
}
return result;
还是仅仅在块范围之外声明
NSNumber *result = nil;
if(turbine_RPM > 0) {
int intResult = [sensorNumber:1];
result = [NSNumber numberWithInt:intResult];
}
return result;
非常感谢
gary您需要在块外声明变量。代码块决定范围。您需要在块外声明变量。代码块决定范围。我喜欢一行:
return (turbine_RPM > 0) ? [NSNumber numberWithInt:[sensorNumber:1]] : nil;
正如Jasarien所指出的,您希望在块之外声明变量。或者立即返回NSNumber
。第二个示例的问题是,如果if语句失败,您将返回一个初始化的变量,因此您需要在else语句中返回一些内容。我喜欢一行:
return (turbine_RPM > 0) ? [NSNumber numberWithInt:[sensorNumber:1]] : nil;
正如Jasarien所指出的,您希望在块之外声明变量。或者立即返回NSNumber
。第二个示例的问题是,如果if语句失败,您将返回一个初始化的变量,因此您需要在else语句中返回一些内容。我不这样认为,但在这种情况下,您可以从块内返回,而不必使用变量。谢谢,我只是想知道是否缺少了一些内容。这只是一个快速的示例代码,但我为result指定了nil,以防它遗漏if。我不这么认为,但在这种情况下,您可以从块内返回,而不使用变量。谢谢,我只是好奇是否遗漏了什么。这只是一个快速的示例代码,但我为结果指定了nil,以防它错过if。