0

ClassAにUIViewプロパティが含まれている状況があります。ClassAの2つの子、ChildAとChildBがあり、どちらもUIView2つの異なるタイプの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

説明のために、プロトコルの代わりにカテゴリを使用し、 maximumDimensionsプロパティUIViewを持つように拡張するソリューションを次に示します。

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 に答える