CocoaアプリケーションとCocoaTouchアプリケーションの間で共有したいクラスがあります。このクラスはさまざまなを計算CGPointし、それらを配列に格納します。ココアにはがあり[NSValue valueWithPoint]ます。CocoaTouchにはがあり[NSValue valueWithCGPoint]ます。
これらのフレームワーク固有のメソッドの使用をバイパスできるソリューションはありますか?
CocoaアプリケーションとCocoaTouchアプリケーションの間で共有したいクラスがあります。このクラスはさまざまなを計算CGPointし、それらを配列に格納します。ココアにはがあり[NSValue valueWithPoint]ます。CocoaTouchにはがあり[NSValue valueWithCGPoint]ます。
これらのフレームワーク固有のメソッドの使用をバイパスできるソリューションはありますか?
およびメソッドを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];