0

以下のメソッドがあり、それを呼び出して別のメソッドで配列データを返したいのですが、うまくいきません。しかし、他のメソッドの自己はデータを返しませんか?

- (NSMutableArray *)glo
{
    NSMutableArray *globalarray = [[NSMutableArray array]init];
    for (int x = 0; x < 10; x++) {
        [globalarray addObject: [NSNumber numberWithInt: arc4random()%200]];
        return globalarray ;
    }
}


-(IBAction)clicked_insertsort:(id)sender{
    [self glo];
}
4

1 に答える 1

2

私は本当にあなたのコードの一部を次のように置き換えようとしています:

- (NSMutableArray *)glo
{
    NSMutableArray *globalarray = [[NSMutableArray array] init];
    for (int x = 0; x < 10; x++) {
        [globalarray addObject:[NSNumber numberWithInt: arc4random()%200]];
    }
    return globalarray; // pull out from the loop
}

この:

-(IBAction)clicked_insertsort:(id)sender{
    NSMutableArray *array = [self glo]; // take care of the return value
    NSLog(@"array : %@", array)
}

アップデート:

クラスにグローバル変数が必要な場合は、次を定義する必要があります。

@interface YourClass : NSObject {
    NSMutableArray *globalarray;
}

// ...

@end

メソッドは次のようになります (変数は現在クラス全体から使用できるため、戻り値は必要ありません)

- (void)glo {
    if (!globalarray) {
        globalarray = [NSMutableArray array];
        for (int x = 0; x < 10; x++) {
            [globalarray addObject:[NSNumber numberWithInt: arc4random()%200]];
        }
    }            
}
于 2012-08-23T21:29:00.763 に答える