NSNotification userinfo示例?

时间:2009-06-23 13:59:14

标签: ios objective-c xcode cocoa cocoa-touch

我有一组使用CGPoints定位的对象。在我的应用程序中的某些时候,数组中的对象需要通知其位置的其他非排列对象。我知道NSNotification是最好的方法,但是我找不到一个像'发送者'和'接收者'这样的通知的好例子,用于包装和解包CGPoint作为userinfo的通知。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:15)

在Cocoa Touch中(但不是Cocoa),CGPoints可以用

包裹和打开
+ (NSValue *)valueWithCGPoint:(CGPoint)point
- (CGPoint)CGPointValue

NSValues可以存储在作为userinfo参数传递的NSDictionary中。

例如:

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

在通知中:

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

答案 1 :(得分:1)

与通知一起传递的userinfo对象只是一个NSDictionary。在userinfo中传递CGPoint的最简单方法是使用-numberWithFloat:将X和Y坐标包装到NSNumbers中。然后,您可以在userinfo字典上使用setObject:forKey:例如使用Xpos和Ypos作为键。

您可以将它包装在NSMutableDictionary上的一个很好的类别中,使用setFloat:forKey等方法......