我在.h文件中有以下内容作为全局变量
NSMutableArray *garr;
以及.m文件中的以下内容
- (void)roundone {
if (!garr) {
garr = [[NSMutableArray alloc]init];
for (int x = 0; x < 900; x++) {
[garr addObject:[NSNumber numberWithInt: arc4random()%600]];
}
}
}
在任何方法中调用var garr的问题然而它正确地返回nslog中的值但是当我在代码中使用garr时系统崩溃!任何想法PLZ
-(IBAction)clicked:(id)sender{
NSLog(@"%@",garr);
//bubbleSort(array); // sort the array
int n = [garr count] ;
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-i-1; j++)
if ([[garr objectAtIndex: j] compare:[garr objectAtIndex: j+1]] ==
NSOrderedDescending)
//#define SWAP(arr, x, y)
do {
id oldX = [garr objectAtIndex: (j)];
// NSLog(@"%d %s",oldX ,oldX);
[garr replaceObjectAtIndex: (j) withObject: [garr objectAtIndex: (j+1)]];
[garr replaceObjectAtIndex: (j+1) withObject: oldX];
} while (0);
NSString *element;
NSEnumerator *iterator = [garr objectEnumerator];
while ((element = [iterator nextObject]) != nil)
NSLog(@"elments %@",element);
我不会在代码中使事情复杂化但是当全局var在方法内部时代码工作正常但在方法外面的garr时不起作用
答案 0 :(得分:1)
你应该在标题中声明你的全局变量,而不是定义它们。标记变量extern
,将定义放入.m
文件,并将变量初始化为nil
。
部首:
extern NSMutableArray *garr;
.m文件:
NSMutableArray *garr = nil;
重建一切,应该消除崩溃。