我一直工作在一个项目过早地释放了几个星期了,最近实施了单独的对象,以帮助保存数据。在实现之后,我一直在更新我的主视图控制器中的标签。的UILabel获取ARC
例如,我试图更新以下标签:
@property (nonatomic, retain) IBOutlet UILabel *numDrinksLabel;
@property (nonatomic, retain) IBOutlet UILabel *BACLabel;
用下面的代码,这是一个被调用上按下一个按钮函数内部:
BACLabel.text = [NSString stringWithFormat:@"%.2f", user.BAC];
numDrinksLabel.text = [NSString stringWithFormat:@"(%i)", user.numDrinks];
这代码块给我的运行时错误:
-[__NSCFString setText:]: unrecognized selector sent to instance 0x1197ef40
但是,相同的代码块内部调用viewDidLoad
或viewDidAppear
执行没有问题。最初,这个建议我,有我的@property
声明一个问题,但我得到了同样的错误,当我改变retain
至strong
,当我改变weak
,该的UILabel对象只是空,这是可以预料的,但仍然很令人沮丧的。
所以现在的问题是,为什么会成为viewDidAppear
功能后dealloced标签的对象?
就如何解决这一问题或根本原因进一步测试任何建议,将不胜感激!
IBOutlets通常应该声明为弱,因为它们包含的视图拥有一个强指针。这就是说,你的错误是说你发送setText字符串而不是标签。你确定这段代码是错误的地方吗? – rdelmar