2

CocoaアプリケーションとCocoaTouchアプリケーションの間で共有したいクラスがあります。このクラスはさまざまなを計算CGPointし、それらを配列に格納します。ココアにはがあり[NSValue valueWithPoint]ます。CocoaTouchにはがあり[NSValue valueWithCGPoint]ます。

これらのフレームワーク固有のメソッドの使用をバイパスできるソリューションはありますか?

4

1 に答える 1

3

およびメソッドをCocoaNSValueに追加するために、にカテゴリを作成できます。valueWithCGPoint:CGPointValue

#もしも !TARGET_OS_IPHONE
@interface NSValue(MyCGPointAddition)
+(NSValue *)valueWithCGPoint:(CGPoint)point;
-(CGPoint)CGPointValue;
@終わり
#endif
#もしも !TARGET_OS_IPHONE
@implementation NSValue(MyCGPointAddition)
+(NSValue *)valueWithCGPoint:(CGPoint)point {
    return [self valueWithPoint:NSPointFromCGPoint(point)];
}
-(CGPoint)CGPointValue {
    NSPointToCGPoint([self pointValue]);を返します。
}
@終わり
#endif

または、とを使用することもできvalueWithBytes:objCType:ますgetValue:

CGPointポイント={10、10};
NSValue * value = [NSValue valueWithBytes:&point objCType:@encode(CGPoint)];
//..。
[値getValue:&point];
于 2012-07-11T18:03:35.667 に答える