1

私のヘッダーファイルには次のものがあります:

@property (nonatomic, retain) NSMutableArray * array1;

そして私のinitWithNibName方法では:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization

    self.array1 = [[NSMutableArray alloc] initWithObjects:@"test", nil];


    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(DoUpdateLabel:) name:@"DoUpdateLabel" object:nil];

}
return self;
}

このDoUpdateLableメソッドは、配列を更新します (いくつかの項目を追加します)。これが完了してViewDidLoadが実行されると、配列が消えてnullになり、テーブルビューにロードしたいので面倒です。

DoUpdateLableメソッドの縮小版を次に示します。実際のメソッドには多くの JSON 解析と URL 要求が含まれているため、それを削減する必要がありました。

-(void)DoUpdateLabel:(NSNotification *) notification
{   
int count = 0;
while(count < 59)
{
    NSString * currentpatname = @"test1";
    if(![currentpatname isEqualToString:@""])
    {
        [self.array1 addObject:currentpatname];
        NSLog(@"array: %@", self.array1);
    }
    count++;
}

NSLog(@"final array: %@", self.array1);
}

保持されていない理由について、私は少し立ち往生しています。どんな助けでも大歓迎です!

ありがとう!

4

2 に答える 2

2

更新された質問を見ると、で始まるスコープ内にその配列を設定しています// Custom initialization。しかし、あなたが気付いていないのは、viewDidLoad実際にこの行で呼び出されているということです: self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

つまり、配列は viewDidLoad 内ではまだ nil であるため、DoUpdateLabel

代わりに、その配列を内部で初期化することをお勧めし-viewDidLoadます。探している結果が表示されます。

于 2013-09-09T14:52:31.757 に答える