1

コード全体で使用できるグローバル変数として配列を定義する必要があります配列には、コード全体で修正する必要がある10個の乱数のデータが必要です。次のようにしましたが、.hに運がありません@interface の後のファイルにこの行を置きます

NSMutableArray *globalarray;

そして.mファイルで、@implementionファイルの後にこれを置きます

- (void)glo {
if (!globalarray) {
 globalarray= [NSMutableArray  globalarray];
    for (int x = 0; x < 10; x++) {
        [globalarray addObject:[NSNumber numberWithInt: arc4random()%200]];
    }}}

同じ.mファイルで、次のようにNSLOGの配列を呼び出しました

-(IBAction)click_one:(id)sender{


    NSLog(@"%@",globalarray);}



-(IBAction)click_two:(id)sender{


    NSLog(@"%@",globalarray);}

コンソールで NSLOG が null を返します。

4

3 に答える 3

3

この行:

globalarray= [NSMutableArray  globalarray];

NSMutableArray に「globalarray」と呼ばれるメソッドがあることを前提としています。ありません。あなたがしたい:

globalarray = [[NSMutableArray alloc] init];
于 2012-08-25T22:29:55.683 に答える
0

問題は、自動解放の割り当てが割り当てられていることです。

 GlobalArray=[NSMutableArray array]; is same declarating it as.  

   GlobalArray=[[[NSMutableArray alloc]init]autorelease];

//したがって、ここでは、自動解放を割り当ててマークすると、参照カウントが1増加し、参照カウントが0になります。参照カウントが0になると、ガベージコレクションに選択されるため、次のように保持する必要があります。

 GlobalArray=[[NSMutableArray array]retain];// when retaining its reference count increases by 1

必要に応じて放します。

于 2012-08-26T03:23:03.830 に答える
0
#import "AppDelegate.h"

// in viewDidLoad
self.del = (AppDelegate*) [[UIApplication sharedApplication] delegate];

// array now available as
NSLog(@"%@", del.dataArray);
于 2012-08-25T22:36:48.213 に答える