我有一个正在运行的应用程序,我即将分发并在其中整理NSLog语句。当我从“case”语句中删除NSLog时,NSArray在“case”语句中声明错误为在AND未声明之前的预期表达式。有人知道为什么会这样吗?这发生在我的应用程序中的所有case语句中,我现在正在删除NSLog。 示例代码部分如下所示:
switch (chosenScene)
{
case 0:
//NSLog(@"group1"); // the following NSArray errors with "expected expression.." AND "..group1Secondsarray undeclared"
NSArray *group1SecondsArray = [NSArray arrayWithObjects: @"Dummy",@"1/15",@"1/30",@"1/30",@"1/60",@"1/125",@"1/250",nil];
NSArray *group1FStopArray = [NSArray arrayWithObjects: @"Dummy",@"2.8",@"2.8",@"4",@"5.6",@"5.6",@"5.6",nil];
NSString *group1SecondsText = [group1SecondsArray objectAtIndex:slider.value];
calculatedSeconds.text = group1SecondsText;
NSString *group1FStopText = [group1FStopArray objectAtIndex:slider.value];
calculatedFStop.text = group1FStopText;
[group1SecondsText release];
[group1FStopText release];
break;
答案 0 :(得分:1)
我不知道正式的解释,但如果您正在做其他任何事情,那么简单的赋值或在case语句中返回一个值,那么你需要把它放在括号内。
case 0:
{
NSArray* myArray=[NSArray arrayWithObjects:ob1, obj2,nil];
...
}
答案 1 :(得分:0)
您不必释放group1SecondsText
和group1FStopText
,它们的保留计数为1,因为它们位于数组中,如果释放它们,它们将变为无效,并且当数组为释放它会破裂。
当您使用objectAtIndex:
访问NSArray中的对象时,它不会增加保留计数,它只是从数组中返回对象。