3

MNCalendar という名前の GitHub リポジトリを使用しており、いくつかのセルを呼び出したいと考えていました。さて、これが私がやった方法です。

MNCalendarViewDayCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];
MNCalendarViewDayCell *cell = (MNCalendarViewDayCell*)[self.collectionView cellForItemAtIndexPath:indexPath];

最初の行で、UICollectionViewCell への MNCalendarViewDayCell ポインターであるという問題が発生しましたが、もう 1 行は問題ありませんでした。ここのボンネットの下で何が起こっているのか、なぜ一番下のものが正しいのですか?

重大なバグではなく、単なる問題であり、疑問に思って、そこから何かを学ぼうとしているだけです:)

4

6 に答える 6

0

したがって、最初のものは へのポインタを取得しますUICollectionViewCell。これが の基本クラスMNCalendarViewDayCellです。ただし、それはスーパークラスですが、それをサブクラスに割り当てることはできません。そのため(MNCalendarViewDayCell *)、ポインタをその基本クラスからサブクラスにキャストするということですUICollectionViewCell。そのため、割り当てに必要な正しいタイプに変換しているため、2番目のものが機能します。

于 2013-09-23T10:59:13.183 に答える