我是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;
}
答案 0 :(得分:1)
你的字符串是否有属性声明?你保留你正在设置的字符串吗?
仍然AFAIK'超出范围'并不一定意味着它没有设置或没有设置任何东西。尝试NSLog的价值或东西。你可能会发现没有错。
看看这个讨论GDB范围的问题:
答案 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}}