Универсальное решение для хранения CGPoint в NSArray в Cocoa и Cocoa Touch?
У меня есть класс, которым я хотел бы поделиться между приложениями Cocoa и Cocoa Touch. Этот класс рассчитывает различные CGPoint
s и сохраняет их в массиве. В какао есть [NSValue valueWithPoint]
, В Какао Touch есть [NSValue valueWithCGPoint]
,
Есть ли какое-либо решение, которое позволило бы мне обойти, используя эти специфичные для фреймворка методы?
1 ответ
Решение
Вы можете создать категорию на NSValue
для того, чтобы добавить valueWithCGPoint:
а также CGPointValue
методы к какао.
#если! TARGET_OS_IPHONE @interface NSValue (MyCGPointAddition) + (NSValue *)valueWithCGPoint:(CGPoint) точка; - (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:& точка];