Используйте свойство NSMutableArray в другом классе target-c - PullRequest
0 голосов
/ 14 октября 2011

У меня есть 2 класса: classA и ClassB.Что я хочу сделать, это установить NSMutableArray * bar в ClassB и использовать его в ClassA.Во время отладки программы MutableArray устанавливается со значениями, но когда я пытаюсь использовать эти значения в ClassA, массив равен 0. Вы знаете, что я делаю неправильно, или существует более эффективный способ передачи значений переменных между классами?

Пример кода

ClassA.h

@interface ClassA : UIViewController {
    NSMutableArray *bar;
}

@property(nonatomic, retain)NSMutableArray *bar;
-(IBAction)Display:(id)sender;

ClassA.m

// bar initialization
-(id)init{
    self=[super init];

    if (self) {
        bar=[[NSMutableArray alloc]init];
    }
    return self;
}

-(IBAction)Display:(id)sender {

// Trying to display the NSMutableArray set in ClassB
NSLog(@"%d",[bar count]);
}

ClassB.m

#import "ClassB.h"
#import "ClassA.h"

ClassA *classA;

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   classA=[[ClassA alloc]init];

   // Populating the NSMUtableArray of ClassA
   for (int i=0; i<[array count]; i++) {
                NSDictionary* dicObjects=[array objectAtIndex:i];

                NSString* remoteUrl=[dicObjects objectForKey:@"remote_url"];
                [classA.bar addObject:remoteUrl];
           }

   // NSLog the results (It works!)
   for (NSString *foo in classA.bar) {
           NSLog(@"%@",foo);
      }

}

1 Ответ

0 голосов
/ 14 октября 2011

Поскольку bar является членом экземпляра ClassA, каждый раз, когда вы создаете новый объект ClassA, он будет иметь другой экземпляр. Когда вы создаете объект ClassA в методе connectionDidFinishLoading, он будет доступен только в этом методе.

Если вы не вызываете метод отображения для того же объекта (насколько я понимаю, это IBAction в классе A, поэтому объект совершенно другой), вы не получите его значение. Напишите простую функцию в ClassA для печати значения и вызова из метода «connectionDidFinishLoading» с использованием [classA methodName];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...