2009-06-23 14 views
5

私はCGPointsを使用して配置されたオブジェクトの配列を持っています。私のアプリでは、配列内のオブジェクトは配列されていない他のオブジェクトにその位置を通知する必要があります。私はNSNotificationが最善の方法だと理解していますが、CGINをラップしてアンラップする通知の「送信者」と「受信者」の例は、userinfoとして見つけることができません。誰も助けることができますか?NSNotification userinfoの例?

答えて

15

を、CGPointsは

で包み、開封することができます
+ (NSValue *)valueWithCGPoint:(CGPoint)point 
- (CGPoint)CGPointValue 

NSValuesは、userinfoパラメータとして渡されるNSDictionaryに格納できます。例えば

NSValue* value = [NSValue valueWithCGPoint:mypoint]; 
NSDictionary* dict = [NSDictionary dictionaryWithObject:value forKey:@"mypoint"]; 

そして、あなたの通知で

:とpointValue:

NSValue* value = [dict objectForKey:@"mypoint"]; 
CGPoint newpoint = [value CGPointValue]; 
+2

ココアでは、あなたがNSPointFromCGPointを使用することができ、その後、NSValueのvalueWithPointを使用しています。 –

+0

NS_BUILD_32_LIKE_64で事前定義されたビルドが可能です。この場合、NSPointはCGPointのtypedefです(常に64ビットビルドです)。 –

1

通知とともに渡されるuserinfoオブジェクトは、単にNSDictionaryです。おそらくuserInfoにCGPointを渡す最も簡単な方法は、-numberWithFloat:を使用してX座標とY座標をNSNumbersにまとめることです。たとえば、XposとYposをキーとして使用して、userinfoディクショナリでsetObject:forKey:を使用することができます。

おそらくsetFloatのような方法で、NSMutableDictionaryの素敵なカテゴリにそれを包むことができます:ココアタッチ(ただし、ココア)で... forKeyか何か

関連する問題