使用objectAtIndex进行分配

时间:2011-10-15 21:35:13

标签: objective-c

为什么会这样:

firstItem = @"Some value";

当我尝试访问NSString firstItem属性时,这会导致错误:

NSArray *values = [dict allVaues];
firstItem = (NSString *)[values objectAtIndex:0];

来自.m:

@synthesize firstItem;

来自.h

NSString *firstItem;
@property (nonatomic, retain) IBOutlet NSString *firstItem;

注意:如果我从方法设置此属性的NSLog,它会显示错误示例的正确值,但稍后数据不可用。我假设我需要显式设置值,而不是作为超出范围的NSMutableDictionary的引用。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您的问题是您实际上并未使用该属性。你直接指定了ivar。如果您将@synthesize行更改为

@synthesize firstItem=_firstItem;

然后您会注意到使用firstItem的代码将不再编译。这是一个很好的迹象,表明你无意中忽略了属性访问者。您应该使用self.firstItem = foo代替。