W tym kodzie nie ma różnicy, w obu przypadkach ocenia się UITableViewCell?
Prawdziwa różnica jest:
w pierwszym przypadku przygnębiony do UITableViewCell?
oczekuje się zawsze uda (nawet jeśli to zero), więc jeśli dequeueReusableCellWithIdentifier
zwróci coś, co nie jest instancją UITableViewCell
(lub instancją odziedziczonej z niej klasy), kończy się niepowodzeniem w środowisku wykonawczym. Wyrażenie zwraca opcjonalnego UITableViewCell?
w drugim przypadku obsada jest opcjonalny: jeżeli obiekt zwrócony przez dequeueReusableCellWithIdentifier
jest ani instancją UITableViewCell
ani instancją podklasy The przygnębiony wdzięcznie ma wartość zero (stąd bez wykonywania błąd).
Oczywiście dequeueReusableCellWithIdentifier
zawsze zwraca UITableViewCell
, dlatego nie ma żadnej różnicy w kodzie. Ale w innych kontekstach różnica może istnieć i trzeba dbać o to, aby uniknąć błędów runtime
'jak UITableViewCell?' Powoduje błąd kompilacji w Swift 2 'AnyObject? nie można przekształcić w UITableViewCell? ' – onmyway133