NSMutableArray中的addObject不起作用

时间:2011-06-04 02:07:13

标签: objective-c xcode nsmutablearray

我是XCode的初学者。

以下是我的代码。我想在mutablearray中添加一个对象。从调试器窗口我可以看到有一个对象添加到数组“words”。我还可以看到该对象的属性“标志”为“NO”。问题是另一个属性“str”显示为“超出范围”。

任何人都可以帮我解决这个问题吗?谢谢你的loooooot!整个下午都被困在这个上面。

NSMutableArray * words=[[NSMutableArray alloc] initWithCapacity:numberOfWords];

Word *w=[[Word alloc] init];    

[w setStr:@"abc" flag:NO];

[words addObject: w];

[w release];

-

@interface Word : NSObject{
    NSString *str;
    BOOL flag;
}

-(void) setStr: (NSString  *) s flag:(BOOL) b
{
    self.str=s;
    flag=b;
}

2 个答案:

答案 0 :(得分:1)

你的字符串是否有属性声明?你保留你正在设置的字符串吗?

仍然AFAIK'超出范围'并不一定意味着它没有设置或没有设置任何东西。尝试NSLog的价值或东西。你可能会发现没有错。

看看这个讨论GDB范围的问题:

Objective-C: instance variables out of scope in debugger

答案 1 :(得分:0)

您的问题是字符串@"abc"是一个临时对象,其范围仅在[w setStr:@"abc" flag:NO]方法调用期间存在。您应该能够str @property Word @interface Word : NSObject{ NSString *str; BOOL flag; } @property (retain) NSString* str; @end 来解决此问题:

@implementation Word
@synthesize str;
-(void) setStr: (NSString  *) s flag:(BOOL) b
{
    self.str=s;
    flag=b;
}
@end

并在您的实施文件中

{{1}}