0

我有一种情况,其中 ClassA 包含一个UIView属性。我有两个 ClassA 的孩子,ChildA 和 ChildB,它们都UIView使用两种不同类型的UIView子类为自己设置了这个属性。我想要求这两UIView个子类都有一个名为 maximumDimension 的属性,然后我希望能够使用它自己的UIView属性在 ClassA 中设置它。

实现这一目标的最佳方法是什么?会是协议吗?如果是这样,是否有人能够提供有关如何在 Objective-C 中实现这一点的代码?

4

2 回答 2

3

会是协议吗?

是的:

@protocol Foo <NSObject>
@property (nonatomic, assign) int maximumDimensions; // wild guess to type from name
@end

然后是实际属性:

@property (nonatomic, strong) id <Foo> bar;
于 2013-01-24T18:33:05.267 回答
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以返回正确的答案。

于 2013-01-24T18:56:18.530 回答