为什么会这样:
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的引用。有什么建议吗?
答案 0 :(得分:2)
您的问题是您实际上并未使用该属性。你直接指定了ivar。如果您将@synthesize
行更改为
@synthesize firstItem=_firstItem;
然后您会注意到使用firstItem
的代码将不再编译。这是一个很好的迹象,表明你无意中忽略了属性访问者。您应该使用self.firstItem = foo
代替。