我正在尝试创建一个跨平台的NSValue类别,该类别将为Cocoa和iOS处理CGPoint / NSPoint和CGSize / NSSize等。

我有这个:

#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
// Mac OSX

+ (NSValue *) storePoint:(NSPoint)point {
  return [NSValue valueWithPoint:point];
}

+ (NSPoint) getPoint {
  return (NSPoint)[self pointValue];
}


#else
// iOS

+ (NSValue *) storePoint:(CGPoint)point {
  return [NSValue valueWithCGPoint:point];
}

+ (CGPoint) getPoint {
  return (CGPoint)[self CGPointValue];
}


#endif


Mac部分可以完美运行,但iOS部分却给我一个错误

  return (CGPoint)[self CGPointValue];


带有两条消息:1)对于需要算术或指针类型的选择器CGPointValue和“使用的类型CGPoint(也称为结构CGPoint)”,没有已知的类方法。

这是为什么?

最佳答案

因为+[NSValue CGPointValue]不存在,所以您想要-[NSValue CGPointValue]

#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
// Mac OSX

+ (NSValue *) storePoint:(NSPoint)point {
  return [NSValue valueWithPoint:point];
}

- (NSPoint) getPoint { // this should be instance method
  return (NSPoint)[self pointValue];
}


#else
// iOS

+ (NSValue *) storePoint:(CGPoint)point {
  return [NSValue valueWithCGPoint:point];
}

- (CGPoint) getPoint { // this should be instance method
  return (CGPoint)[self CGPointValue];
}


#endif

关于ios - 跨平台NSValue类别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23910621/

10-12 00:15