__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]:发送到实例的无法识别的选择器

iPhone 应用程序崩溃 [__NSCFString objectForKey:] 无法识别的选择器发送到实例

[__NSCFString setView:]: 无法识别的选择器发送到实例 0x8292720