Swiftのis
演算子は、サブクラスでもマッチする。
例:
あるUIViewControllerのサブビューのうち、UIViewのみを削除したいとする。
for view in self.view.subviews {
if view is UIView {
view.removeFromSuperview()
}
}
とすると、もしview
がUIViewのサブクラスであるUIButtonクラスやUIImageViewのインスタンスだったとしても、view is UIView
はtrue
になってしまう。
もし、サブクラスのインスタンスを対象から外したい場合は、
for view in self.view.subviews {
if type(of: view) == UIView.self {
view.removeFromSuperview()
}
}
のように、type(of:) == T.self
としてtype(of:)
を使う必要がある。