0

我在 .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 时系统崩溃!!!任何想法请

-(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);

我没有使代码中的事情复杂化,但是当全局变量在方法内部时代码可以正常工作,但是当方法外部的 garr 时代码不起作用

4

1 回答 1

1

您应该在标头中声明全局变量,而不是定义它们。标记变量extern,将定义放入.m文件中,并将变量初始化为nil

标题:

extern NSMutableArray *garr;

.m 文件:

NSMutableArray *garr = nil;

重建一切,崩溃应该被消除。

于 2012-08-30T20:47:36.243 回答