我有一个名为'PostView'的简单类,它是UIView的子类。在该类中,我在实现中定义了一个'item',它是'Post'的实例。
@interface PostView : UIView <UIScrollViewDelegate> {
Post *item;
}
这对我来说很好,但是当我将它子类化时会出现问题:'PostPhotoView'。 'item'变量现在需要是一个'PostPhoto'实例,但是我不知道如何在不在每个子类中定义'item'的情况下这样做,这听起来有点重复和脏......
理想情况下我想这样做:
@interface PostPhotoView : PostView {
PostPhoto *item;
}
但显然我无法重新定义变量。也许我会以错误的方式解决这个问题?
感谢。
答案 0 :(得分:4)
有两种方法可以解决这个问题:
PostPhoto *theItem = (PostPhoto *)self.item
id
类型,这样您就可以执行PostPhoto *theItem = self.item
。为了完整起见,如果您使用类型为id
的声明属性,则可能还需要检查setter中的值:NSParameterAssert([theItem isKindOfClass:[Post class]])
。