我正在收到一个问题的崩溃报告,这个问题似乎只发生在特定型号的iPad(iPad 3)上。这是错误:
NSInvalidArgumentException -[__NSCFString setText]: unrecognized selector sent to instance 0x...
以下是它来自的代码部分 - 具体来说,下面的第三行:
for thisColumn in 0..<numberOfColumns{
let thisElement=ElementClass(frame: CGRectMake(0,0,0,0),column:thisColumn);
thisElement.myLabel.text=elementText(thisColumn)
我没有iPad 3可以测试,不幸的是“iPad Retina”模拟器无法重现这个问题。所以,这就是我必须要做的。
ElementClass
是我应用的自定义类之一,它是UIControl
的子类。其中一个子视图称为myLabel
,它应该是UILabel
。由于它在崩溃中显示为__NSCFString
,因此问题可能与UILabel
设置有关。 ElementClass
初始值设定项通过调用以下代码来设置UILabel
:
let myLabel=UILabel()
private func setupMyLabel(){
let thisLabel=myLabel;
thisLabel.frame=CGRectMake(0,
underlineY+myImage.frame.size.height,
self.frame.size.width,
self.frame.size.height-underlineY)
self.addSubview(thisLabel)
// other styling
return
}
再一次,这只是在iPad 3上发生的(到目前为止)。感谢阅读,任何关于可能出现问题的想法都会非常棒。
编辑:
这是ElementClass的完整init方法:
init(frame: CGRect, column:Int) {
// Setup general structure
self.column=column;
super.init(frame: frame)
self.frame.size.width=elementWidth;
self.frame.size.height=ElementClass.elementHeight;
self.backgroundColor=UIColor.clearColor()
setupMyLabel()
// other setup methods
}