我正在尝试创建一个跨平台的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/