iOS - NSMutableArray在设置属性上显示超出范围的对象

时间:2011-10-20 17:42:07

标签: objective-c ios nsmutablearray

我已经实现了以下代码来将NSMutableArray分配给属性 -

NSMutableArray * anArray = [responseDictionary valueForKeyPath:@"tags"];
    NSLog(@"The array length is=%d",[anArray count]);
    for (NSString *s in anArray) {

        NSLog(@"you are %@", s);

    }
    [self setActiveTagArray:anArray];

打印出字符串值很好。但是在setter函数中,如果我放置一个断点,我看到它显示有两个对象,但它们是“超出范围”。这是什么意思?我究竟做错了什么?我的getter也没有获取任何值。属性函数 -

-(void)setActiveTagArray:(NSMutableArray *)tags
{
   activeTagArray = [[NSMutableArray alloc] init];
   activeTagArray = tags;
   //NSLog(@"%@",[activeTagArray count]);
}

-(NSMutableArray *)getActiveTagArray
{
   return activeTagArray;
}

1 个答案:

答案 0 :(得分:0)

activeTagArray是一个类变量以及一个属性。考虑使用_activeTagArray作为类变量名。然后在.m文件中使用@synthesize activeTagArray = _activeTagArray;,并完全获得后两种方法。

对评论的回应:

你说“我已经实现了以下代码来将NSMutableArray分配给一个属性”。我认为这意味着你的.h文件中有“@property (nonatomic, retain) NSMutableArray *activeTagArray;”。如果是这种情况,那么您将通过otherObject'sNameForYourClassHere.activeTagArray访问它。

@synthesize创建访问者&为你改变。