[的UILabel copyWithZone:]:无法识别的选择发送到实例([UILabel cop

2019-06-24 21:20发布

我觉得我在敲我的头靠在这里的墙(和我已经准备好做,坦率地说)。

我想设置背景的视图。 背景我需要设置为图像,我使用此代码(其中工程在另外两个子类的UIViewController完美的罚款 - 这是一个复制/粘贴到新的文件):

UIImage *img = [gameNode imageFromKey:@"background"];
UIColor *bg = [[UIColor alloc] initWithPatternImage:img];
self.view.backgroundColor = bg;
[bg release];

正如我所说的,这部作品在其他两个地方完全正常的,但是在这里,线self.view.backgroundColor = bg抛出

'NSInvalidArgumentException', reason: '-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x9259840'

有没有更多的去了。 我在IB验证了顶级视图的引用出口设置为文件的所有者。 我清理项目并重新启动。 我甚至关闭Xcode和再次重新启动它 - 没有运气。 还有什么我缺少什么?

编辑:正如我所说,没有太多的回堆栈跟踪,眼前这个:

2012-05-28 13:13:56.997 OOKL[36012:17303] -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x92b79a0
2012-05-28 13:13:56.997 OOKL[36012:17303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x92b79a0'
*** First throw call stack:
(0x2933052 0x44c7d0a 0x2934ced 0x2899f00 0x2899ce2 0x2935bd9 0xaa92dd 0x6a4f40 0x6a4eeb 0x6bfd60 0xc0191a 0x2934e1a 0x289e821 0xc0046e 0xaa7e2c 0xaa83a9 0xaa85cb 0xb2b59 0xb1969 0x2934ec9 0x9e55c2 0x9e555a 0xa8ab76 0xa8b03f 0xa8a2fe 0xa0aa30 0xa0ac56 0x9f1384 0x9e4aa9 0x2ac6fa9 0x29071c5 0x286c022 0x286a90a 0x2869db4 0x2869ccb 0x2ac5879 0x2ac593e 0x9e2a9b 0x214d 0x20c5)

闲来无事 - 之前或之后。

Answer 1:

我想这是在Xcode那些莫名其妙的错误,你无法追踪或重现每次之一。 我缩小了问题倒在IB一个特定的UILabel。 当我把它连接到一个IBOutlet UILabel * ,我得到这个错误。

在进一步的调查,事实证明,名title是造成问题。 我曾在标签声明

IBOutlet UILabel *title;

当我的名字改为gtitle ,一切都按预期。 谁知道?..



Answer 2:

试试这个 :

self.view.backgroundColor = [UIColor clearColor];
self.view.layer.backgroundColor = [[UIColor alloc] initWithPatternImage:img].CGColor;


Answer 3:

这肯定看起来像一个“过度释放”的问题。

原因是很难在你的榜样,告诉(因为代码看起来绝对罚款),但你有一个事实copyWithZone上的一个实例发送选择UILabel (代替UIColor )肯定会告诉我, bg已经超过发行现在指的是一个UILabel

检查以后你不要再释放对象的代码bg

希望这可以帮助

编辑后的第一条评论

这是很奇怪的,你收到copyWithZone unrecognized selector sent to instance ,因为我会相信,如果你的self.view是错误的类型(不是的UIView ),那么你将获得setBackgroundColor unrecognized selector sent to instance ,而不是一个copyWithZone

为了更好地分析这个问题,当引发异常,我会写到调试器:

po [self view]
po [[self view] backgroundColor]

看看是否一切顺利工作了理所应当的。



Answer 4:

这个问题发生在我身上昨晚我确实是有一个标签命名的标题。 我改变了名称,其他没有工作的东西时,撕了一下我的头发的。 事实证明,我试图从文本字段发送NIL值在VC的标签。 我有4个VC的,并且用户输入在VC 1中的文本字段中的标题和被存储到类型的NSString的对象。 这串放入一个标签在VC 4.当用户在犯规VC 1输入标题,这也正是NIL走了进来。 我通过指定一个默认值的字符串对象,当用户不VC1输入标题固定它。 希望可以帮助别人。



Answer 5:

我有我设法使用这里提供的答案来解决类似的问题。

在我的情况,但是,我有(用来呈现在一个格式化的方式等日期)一个名为UIDateLabel类。 编译和运行导致NSInvalidArgumentException如上所述。

我很怀疑,也许有一个叫这样的类,但谷歌搜索上UIDateLabel仅表现(链接到苹果公司,因为我可以看到,没有)有些晦涩命中。 所以,我认为,有一段时间没有命名问题......直到我读这里的答案,并给它一个尝试。

所以,我更换了名称UIDateLabelAbc,一切完美的作品。 重命名回UIDateLabel为XCode中告诉我,有一个与该名称已是类不起作用。 所以我做了一些更多的谷歌搜索,发现声称列出UIKit.framework继承层次一些wiki页面,并在该列表中,我发现UIDateLabel上市。 然而,这就是我设法找到有关这个类的信息,即它的存在。 它是什么,它的目的等目前仍是未知给我。

更新:阅读有关命名约定后,我现在认识到,与UI前缀你的类是不是好的做法(至少可以这样说)。 所以,不要用UI前缀你的类,你会避免这种情况,可能一堆其他的问题。



Answer 6:

我得到这个错误,当我宣布一个IBOutlet变量,并给它相同的名称,否则该视图控制器的东西。 重命名我的变量和函数更理智,因此解决问题



文章来源: [UILabel copyWithZone:]: unrecognized selector sent to instance