objective c在循环外分配数组变量

时间:2016-12-25 00:50:02

标签: ios objective-c arrays

在下面的代码中,我想计算循环结束时的强度净值,但是目标C在NSlog中调用zsum undeclared变量。如何在结束时循环计算Sum并将其传递到循环外。

NSMutableArray *arr = [[NSMutableArray alloc] init];
for (int x = 1; x < 20; x++) {
    double zsum = 0;
    NSMutableArray *row = [NSMutableArray new];
    for (int y = 1; y < 20; y++) {  
        uchar intensity= curFrame.at<uchar>(cvPoint(y, x));
        double zebra = double (intensity)/255;
        zsum+= zebra;
        [row addObject:[NSNumber numberWithChar:intensity]];
    }

   // NSLog(@"%d", x);

    //NSLog(@"%f",d);
    [arr addObject:[NSNumber numberWithInt:zsum]];
 //   [matrix addObject:row];
}
NSLog(@“%f",zsum);

1 个答案:

答案 0 :(得分:1)

因此,在声明arr之后和for循环之前,将zsum的decaration移动到for循环之外:

import 'codemirror/theme/3024-night.css'

const options = {
      lineNumbers: true,
      readOnly: false,
      mode: 'htmlmixed',
      theme:'3024-night'
};

...


<Codemirror ref="editor" value={this.props.value} onChange={this.props.updateCode} options={options}/>

在Objective-C中,任何时间代码都包含在定义新范围的大括号(NSMutableArray *arr = [[NSMutableArray alloc] init]; double zsum = 0; for (int x = 1; x < 20; x++) { //The rest of your for loop code goes here. } {)中。在这些大括号内声明的任何变量只存在于这些大括号内。退出大括号时,变量&#34;超出范围&#34;并且不再存在。外部作用域中定义的变量对于更深层嵌套的作用域级别是可见的,但不在外部。

}

上面的代码非常人为,但有效。您可能不会有仅仅定义范围级别的大括号​​,但您可以。更有可能的是,它们会封闭块,if语句,函数等等。