我无法为此找到更合适的标题。这是场景:
[String: UITableView?]
编辑:如果您没有放置显式类型注释,编译器会在此特定情况下推断views
。
现在,如果我没有明确让编译器知道[String: Any]
属于-[_SwiftValue nsli_superitem]: unrecognized selector sent to instance 0x60000044a560
类型(就像注释掉的东西一样),这段代码会崩溃,我会得到一个整齐的小崩溃给我一个中指以及此消息:
int _rawTemp = 0x7fd10;
int _digT1 = 0x196e;
int _digT2 = 0x7e66;
int _digT3 = 0x3200;
int var1 = (((_rawTemp >> 3 - _digT1 << 1)) * _digT2) >> 11;
int var2 = (((((_rawTemp >> 4) - (_digT1)) * ((_rawTemp >> 4) - (_digT1))) >> 12) * (_digT3)) >> 14;
int t_fine = var1 + var2;
int temperature = ((t_fine) * 5 + 128) >> 8;
从Swift 2.x迁移后,这样的事情发生在各地。有人可以就这个问题说清楚吗?为什么会这样?怎么避免这样的事情?如何发现此类崩溃的起源(有些很难追查)?
答案 0 :(得分:1)
这是Swift 3的一个问题。
明确声明字典:
let views: [String:UIView] = ["table":self.tableView]
如果您以这种方式创建let views = ["table": self.tableView]
,则会收到[String:UIView?]
类型,并且可选值是主要问题。
Any
和AnyObject
的<{Usage。
Swift提供了两种特殊类型来处理非特定类型:
任何可以表示任何类型的实例,包括函数 类型。
AnyObject可以表示任何类类型的实例。