在其他类objective-c中使用NSMutableArray属性

时间:2011-10-13 20:49:39

标签: objective-c class nsmutablearray

我有两个类:classA和ClassB。我想要做的是在ClassB中设置NSMutableArray * bar并在ClassA中使用它。在调试程序时,MutableArray设置了值,但是当我尝试在ClassA中使用这个值时,数组是0.你知道我做错了什么或者是否有更有效的方法在类之间传递变量值? / p>

示例代码

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 :(得分:0)

由于bar是ClassA的实例成员,因此每次创建ClassA的新对象时都会有不同的实例。在“connectionDidFinishLoading”方法中创建ClassA的对象时,只能在该方法中访问该对象。

如果你没有在同一个对象上调用display方法(根据我的理解,它是classA中的IBAction,因此Object完全不同)你将无法获得它的值。在ClassA中编写一个简单的函数来打印值,并使用[classA methodName]从“connectionDidFinishLoading”方法调用;