在查看UICollectionViewLayout时,我注意到它的属性UICollectionView是只读的
@property (nonatomic, readonly) UICollectionView *collectionView
讨论
集合视图对象在为其分配新布局对象时设置此属性的值。
这里提到的集合视图对象是UICollectionView实例。
UICollectionView如何设置 不同类对象 (UICollectionViewLayout)的只读属性?
要清楚,
因为此属性是只读的,所以不能这样做:
UICollectionView *layout =...;
layout.collectionView = someCollectionView; // compile error here since that property is read-only.
然而,当你做
时 [someCollectionView setCollectionViewLayout:layout];
// this also updates layout.collectionView such that,
// layout.collectionView == someCollectionView
这基本上意味着,在这个方法中,UICollectionView以某种方式成功调用了
layout.collectionView = someCollectionView;
collectionView如何修改布局对象的只读属性?
答案 0 :(得分:2)
如果您查看the class dump of UICollectionViewLayout
,可以看到有一个私有- (void)_setCollectionView:(id)arg1
方法可以设置集合视图。很显然,Apple有一个内部使用的setter,但你并不打算。当您致电setCollectionViewLayout:
时,Apple会在内部调用该setter方法,并设置其实施所需的其他属性。