

StoryBoardから紐付けたUIパーツ(IBOutlet)はImplicitlyUnwrappedOptional型になりますが、紐付いているクラスをインスタンス化した後にはnilになることは無いということでしょうか？

Objective-CからSwiftへ移行していて、  
今までは紐付けたUIパーツのframeの変更を行う場合、以下のように再度イニシャライズし、nilの場合を想定して対応していたのですがSwiftだとエラーになりました。

[code]

    self.titleLabel = UILabel(frame: CGRect(x: 8, y: 5, width: 70, height: 18))
    
[/code]

もしnilになることが無ければ、以下のように値のみの変更で対応できると思うのですがどうなのでしょうか？

[code]

    self.titleLabel.frame = CGRect(x: 8, y: 5, width: 70, height: 18)
    
[/code]


CC BY-SA 3.0
2016-10-18T07:38:55.650
29654
2016-10-20T05:32:36.467
14782
question
swift xcode swift3
StoryBoardと紐付けたUIパーツについて


[API Reference - UIView -
addSubview(_:)](https://developer.apple.com/reference/uikit/uiview/1622616-addsubview)

このDiscussionより引用すると、

> This method establishes a strong reference to view and sets its next
> responder to the receiver, which is its new superview.

Superviewは、Subviewを強参照しますから、`nil`になることはありません。それは、Storyboard/Interface
Builderにおいて、Viewを配置した場合も同様です。

※Swift3より、 **ImplicitlyUnwrappedOptional型** は廃止になりました。

[Abolish ImplicitlyUnwrappedOptional type](https://github.com/apple/swift-
evolution/blob/master/proposals/0054-abolish-iuo.md)

`!`のついた型は、自動UnwrapのオプションがついたOptional型であり、Optional型と異なる型ではない、ということです。


CC BY-SA 3.0
2016-10-18T13:03:56.697
29671
2016-10-20T05:32:36.467
2016-10-20T05:32:36.467
18540
18540
29654
answer