我的情况是ClassA包含UIView
属性。我有两个ClassA,ChildA和ChildB的子项,它们都为这两个不同类型的UIView
子类设置了这个UIView
属性。我想要求这两个UIView
子类都有一个名为maximumDimension的属性,然后我希望能够使用自己的UIView
属性在ClassA中设置它。
实现这一目标的最佳方法是什么?它会是一个协议吗?如果是这样,有人能够提供有关如何在Objective-C中实现这一目标的代码吗?
答案 0 :(得分:3)
这是一个协议吗?
是:
@protocol Foo <NSObject>
@property (nonatomic, assign) int maximumDimensions; // wild guess to type from name
@end
然后是实际属性:
@property (nonatomic, strong) id <Foo> bar;
答案 1 :(得分:2)
为了便于讨论,这是一个使用类别而不是协议的解决方案,将UIView
扩展为 maximumDimensions 属性:
<强>的UIView + MaximumDimensions.h 强>
@interface UIView (MaximumDimensions)
@property ( nonatomic, readonly ) CGSize maximumDimensions ;
@end
<强>的UIView + MaximumDimensions.m 强>
@implementation UIView (MaximumDimensions)
-(CGSize)maximumDimensions { return self.bounds.size ; }
@end
现在,在ClassA
的方法中,您可以访问self.view.maximumDimensions
。 (因为UIView现在有一个 maximumDimensions 属性。)您的UIView
,ChildA
和ChildB
的子类可以实现-maximumDimensions
以返回正确的答案。