gpt4 book ai didi

ios - Objective C 子类 iVar 不采用相同的指针类型?

转载 作者:行者123 更新时间:2023-11-29 12:03:39 26 4
gpt4 key购买 nike

我遇到了一个我不明白的错误。我将 UICollectionViewCell 子类化如下:

CollectionViewCell.h

@interface CollectionViewCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *txtLabel;

在 View Controller 中,我按如下方式使用它:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

CollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
UICollectionViewCell *cellOne = [collectionView cellForItemAtIndexPath:indexPath];

使用 CollectionViewCell 的第一个调用给出了警告,第二个没有,它们都是同一个类。选中单元格后更改单元格并访问其中的数据。

关于 CollectionViewCell 的行的警告是“Incompatible pointer types initializing 'CollectionViewCell *' with an expression of type 'UICollectionViewCell *'

如果它们都是同一个类,唯一的区别是 iVar txtLabel,为什么它们的工作方式不同?

我正在尝试使用 indexPath 获取单元格。我假设这些单元格有一些存储空间,您可以使用传入的 indexPath 访问这些单元格。

Q1。我假设我可以通过使用传入的 indexPath 获取单元格是否正确?

Q2。为什么一个调用有效而另一个无效,因为它们都是同一类?

最佳答案

CollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];

-cellForItemAtIndexPath: 方法被定义为返回 UICollectionViewCell。编译器不知道实际返回的是 CollectionViewCell

你必须向下转型来告诉编译器你知道你在做什么

CollectionViewCell *cell = (CollectionViewCell *) [collectionView cellForItemAtIndexPath:indexPath];

这将删除警告。虽然这只是一个警告。它会警告您可能的错误,但代码会正常工作。

关于ios - Objective C 子类 iVar 不采用相同的指针类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com