__NSCFString setHidden:无法识别的选择器发送到实例
Posted
技术标签:
【中文标题】__NSCFString setHidden:无法识别的选择器发送到实例【英文标题】:__NSCFString setHidden: unrecognized selector sent to instance 【发布时间】:2012-11-28 00:28:57 【问题描述】:我有一些 UILabel 已被声明为属性并合成。我将这些标签隐藏在viewDidLoad
中。经过一些计算,当我尝试使用 hidden
属性取消隐藏它们时,应用程序崩溃并出现主题中提到的错误。我试过NSLog
知道它是否已被释放,但它向我展示了标签的精细值。请有人可以帮助我,当我正常访问它时,内存管理问题在哪里。谢谢。
显示一些代码供参考:
在 .h 文件中:
@interface abc : UIViewController
UILabel *value;
@property(nonatomic,retain) IBOutlet UILabel *value;
在 .m 文件中:
@synthesize value;
-(void) viewDidLoad
value.hidden = YES;
-(IBAction) calculate:(id)sender
//On some button click, assign some value to label and unhide it
NSLog(@"%@",value); //perfectly OK
value.hidden = NO; //throws exception here
【问题讨论】:
这个错误是因为标签正在被释放。您如何为标签设置值?你也可以添加吗?还要添加打印在控制台中的 NSLog 语句。 哦,谢谢@ACB,您指出了正确的方向。在计算方法中,我将文本分配给值而不是其文本属性。我在写:value = [NSString stringWithFormat:@"%f kcal", (cal / gram) * [amount.text floatValue]];
正在改变参考。感谢您的帮助:)
这正是我的想法。让我添加它作为答案。请接受。 :)
@iAnum 现在我面临着类似的问题。请问如何解决这个问题
【参考方案1】:
错误是因为标签被释放并分配给NSString
。检查您如何为标签设置值。您应该将NSString
分配给UILabel
,这会导致它在value
参数上调用隐藏属性时引发此错误。
【讨论】:
你没有提到遇到类似问题我们应该怎么做。如何将 String 分配给 UILabel 并隐藏和取消隐藏它以上是关于__NSCFString setHidden:无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 [__NSCFString _isResizable] 的运行时错误:无法识别的选择器发送到实例?
[__NSCFString objectAtIndex:]:无法识别的选择器发送到实例错误
无法将'__ NSCFString'类型的值转换为'NSData'
[__NSCFString name]:发送到实例的无法识别的选择器