我有两个类: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);
}
}
答案 0 :(得分:0)
由于bar是ClassA的实例成员,因此每次创建ClassA的新对象时都会有不同的实例。在“connectionDidFinishLoading”方法中创建ClassA的对象时,只能在该方法中访问该对象。
如果你没有在同一个对象上调用display方法(根据我的理解,它是classA中的IBAction,因此Object完全不同)你将无法获得它的值。在ClassA中编写一个简单的函数来打印值,并使用[classA methodName]从“connectionDidFinishLoading”方法调用;