UICollectionView如何设置UICollectionViewLayout的只读属性?

时间:2013-12-14 04:59:24

标签: objective-c uicollectionview

在查看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如何修改布局对象的只读属性?

1 个答案:

答案 0 :(得分:2)

如果您查看the class dump of UICollectionViewLayout,可以看到有一个私有- (void)_setCollectionView:(id)arg1方法可以设置集合视图。很显然,Apple有一个内部使用的setter,但你并不打算。当您致电setCollectionViewLayout:时,Apple会在内部调用该setter方法,并设置其实施所需的其他属性。