2014-02-18 29 views
2

爲什麼ClassA NSMutableArray arl count仍然是0?ios方法param指定全局變量

有沒有辦法解決這個問題?

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 
} 

回答

1

您在doSomething中創建了A的新實例。該實例與連接到button:方法的實例不同,後者的arl仍未初始化,因此沒有任何項目,因此在調用button時計數爲零。

0

您創建一個對象first.When A的viewDidLoad中,創建A B object.But當B對象調用DoSomething的方法,你再創建其他新的目的,不等於先前的目的。 而你的按鈕屬於第一個A對象,可變數組屬於第二個A對象。 有點複雜,我希望你能理解。