0

Cocoa および iOS 用に、CGPoint/NSPoint および CGSize/NSSize などを処理するクロスプラットフォーム NSValue カテゴリを作成しようとしています。

私はこれを持っています:

#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];

2 つのメッセージ: 1) セレクター CGPointValue の既知のクラス メソッドがなく、「算術型またはポインター型が必要な型 CGPoint (別名 struct CGPoint) を使用しました。

何故ですか?

4

3 に答える 3

2

+[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
于 2014-05-28T11:48:28.093 に答える
-2
+ (CGPoint) getPoint {
  return (CGPoint)[self CGPointValue];
}

あなたの変数はmajで始まりますか?変数を最小で設定する方が良いではないですか。CGPoint クラスに問題がある可能性があります。

[self cgPointValue];
于 2014-05-28T11:44:40.990 に答える