ios方法param分配全局变量

时间:2014-02-18 02:41:44

标签: ios iphone objective-c

为什么ClassA NSMutableArray arl计数仍为0?

这有什么办法吗?

B类

B.h

#import <Foundation/Foundation.h>
#import"A.h"

@interface B :NSObject
-(void) doSomeThing;

B.m

@implementation B

-(void)doSomeThing{
      NSMutableArray *Array = [[NSMutableArray alloc] initWithObject:@"1",@"2",@"3",@"4",nil];
      A *a = [[A alloc] init];
     [a getValue:Array];
}

A类

A.H

#import <UKit/UKit.h>
@class B;
@interface A :UIViewController;

@property (strong,nonatomic) NSMutableArray *arl;

-(void) getValue:(NSMutableArray *)Array;

-(IBAction)button:(id)sender;

@end

A.M

 @implementation A
 @synthesize arl;

 -(void) viewDidLoad {
     [super viewDidLoad];
     B *b = [[B alloc] init];
    [b doSomeThing];
}

-(void) getValue:(NSMutableArray *) Array {

     arl = Array;
    // arl = [[NSMutableArray alloc]initWithArray:Array];
    // [arl addObjectFromArray:Array];
    NSLog(@"arl count is :%d",[arl count]); // the log at here is 4
}

-(IBAction) button : (id)sender{
    NSLog(@"arl count is :%d",[arl count]);// the log at here is 0 
}

2 个答案:

答案 0 :(得分:1)

您在A中制作了doSomething的新实例。该实例与连接到button:方法的实例不同,其arl仍然未初始化,因此其中没有项目,因此button时的计数为零调用。

答案 1 :(得分:0)

首先创建一个A对象。当A的viewDidLoad时,你创建一个B对象。但是当B对象调用doSomeThing方法时,再次创建另一个新的A对象,不等于先前的A对象。 并且您的按钮属于第一个A对象,可变数组属于第二个A对象。 有点复杂,我希望你能理解。