UICollectionViewおよびUICollectionViewLayoutのクラス参照によると、UICollectionViewはそのcollectionViewLayoutプロパティへの強い参照を保持し、UICollectionViewLayoutはそのcollectionViewプロパティへの強い参照も保持します。 UICollectionViewでUICollectionViewとそのcollectionViewLayoutの間に保持サイクルがありますか?
、UICollectionViewLayoutで
@property(nonatomic, strong) UICollectionViewLayout *collectionViewLayout
、(強いが、デフォルトのプロパティの属性です)。
@property(nonatomic, readonly) UICollectionView *collectionView
ここでは保持サイクルのように見えます。代わりにUICollectionViewLayoutがcollectionViewの弱い参照を保持しないのはなぜですか?
readonlyプロパティのデフォルト属性は決して決してありません。読み込み専用プロパティにはバッキングivarがなく、 'strong'または' weak'のみバッキングivarsに適用されます。 'UICollectionViewLayout'は親の' UICollectionView'の 'weak'参照を保持し、それをreadonlyプロパティのゲッターから返し、保持サイクルを回避します。 –