可変サブビューを持つビューがあります。サブビューは、このサブビューのタイプを記述する列挙型を使用して設定されます。私の質問は、以下が強い参照サイクルを引き起こすかどうか、またはこれを行うためのより良い方法があるかどうかです:
class ControlBar: UIView {
var item = [ControlBarItemType : ControlBarItem]()
func set(with types: [ControlBarItemType]) {
for type in types {
let newItem = ControlBarItem(frame: CGRect(), type: type)
//constraints and stuff
self.addSubview(newItem)
item[type] = newItem
}
}
}
辞書が弱いとは言えません。そのため、スーパービューには、サブビュー階層内の各 ControlBarItem への参照と、タイプ別にインデックス付けされたこの辞書への参照があります。これは、ControlBar のデリゲートとして機能する viewController から BarItem の状態を変更する必要がある場合があるためです。