Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 静态int和静态NSArray的访问方式不同_Ios_Objective C - Fatal编程技术网

Ios 静态int和静态NSArray的访问方式不同

Ios 静态int和静态NSArray的访问方式不同,ios,objective-c,Ios,Objective C,在这个演示代码下面,流程的逻辑性并不重要 @interface ViewController ()<UITableViewDataSource, UITableViewDelegate> @end static int channelIndex = 0; static NSMutableArray *channelsDataArray = nil; @implementation ViewController - (void)getSomething {

在这个演示代码下面,流程的逻辑性并不重要

@interface ViewController ()<UITableViewDataSource, UITableViewDelegate>

@end

static int channelIndex = 0;
static NSMutableArray *channelsDataArray = nil;

@implementation ViewController
    - (void)getSomething {
            // Append the desiredValuesDict dictionary to the following array.
            if (!self.channelsDataArray) {
                self.channelsDataArray = [[NSMutableArray alloc] initWithObjects: desiredValuesDict, nil];
            } else {
                [self.channelsDataArray addObject:desiredValuesDict];
                NSLog(@"channelsDataArray : %@", self.channelsDataArray);
            } 

            // This will print the result I expected.
            NSLog(@"channelIndxBefore: %i", channelIndex);
            ++channelIndex;
            NSLog(@"channelIndxAfter: %i", channelIndex);
    }


@end
将对象添加到变量中可以正常工作

[channelsDataArray addObject:desiredValuesDict];
它不会显示任何警告,但channelsDataArray将为零,并且无法将所需的值Dict分配给它

问题:我应该在什么时候添加self前缀?为什么它们都是静态变量,但一个必须添加self,另一个不添加?

[最初是注释:]

该错误表明您有另一个
@接口
(在
.h
文件中),并且您在该文件中声明了一个实例变量,其名称与在引用文件中声明的全局变量相同。您需要删除其中一个,这取决于您需要什么


HTH

我猜您还有另一个
@界面
(在
.h
文件中)。读了这些,一切都会变得显而易见。如果没有,请查找实例变量和全局变量之间的差异。如果在那之后仍然卡住,请编辑问题以包含其他界面,毫无疑问,有人会帮助您。当然,如果没有其他界面,我猜是错的…@CRD你完全正确!我在.h文件中声明了channelsDataArray,并在接口()和实现之间声明了channelDataArray。这是c类型的全局变量。非常感谢你,你可以把你的答案贴在我的问题下面,我会投票给你!
[channelsDataArray addObject:desiredValuesDict];