为什么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
}
答案 0 :(得分:1)
您在A
中制作了doSomething
的新实例。该实例与连接到button:
方法的实例不同,其arl
仍然未初始化,因此其中没有项目,因此button
时的计数为零调用。
答案 1 :(得分:0)
首先创建一个A对象。当A的viewDidLoad时,你创建一个B对象。但是当B对象调用doSomeThing方法时,再次创建另一个新的A对象,不等于先前的A对象。 并且您的按钮属于第一个A对象,可变数组属于第二个A对象。 有点复杂,我希望你能理解。