IPhone SDK删除NSLog导致NSArray未申报!

时间:2010-02-07 08:59:46

标签: iphone sdk nsarray

我有一个正在运行的应用程序,我即将分发并在其中整理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;

2 个答案:

答案 0 :(得分:1)

我不知道正式的解释,但如果您正在做其他任何事情,那么简单的赋值或在case语句中返回一个值,那么你需要把它放在括号内。

case 0:
{
    NSArray* myArray=[NSArray arrayWithObjects:ob1, obj2,nil];
    ...
}

答案 1 :(得分:0)

您不必释放group1SecondsTextgroup1FStopText,它们的保留计数为1,因为它们位于数组中,如果释放它们,它们将变为无效,并且当数组为释放它会破裂。

当您使用objectAtIndex:访问NSArray中的对象时,它不会增加保留计数,它只是从数组中返回对象。