【发布时间】:2010-11-05 04:28:30
【问题描述】:
我有一个使用 CGPoints 定位的对象数组。在我的应用程序中的某些时候,数组中的一个对象需要通知其他非数组对象它的位置。我知道 NSNotification 是最好的方法,但是对于将 CGPoint 包装和解包为 userinfo 的通知,我找不到一个像样的“发送者”和“接收者”示例。有人可以帮忙吗?
【问题讨论】:
标签: ios objective-c xcode cocoa cocoa-touch
我有一个使用 CGPoints 定位的对象数组。在我的应用程序中的某些时候,数组中的一个对象需要通知其他非数组对象它的位置。我知道 NSNotification 是最好的方法,但是对于将 CGPoint 包装和解包为 userinfo 的通知,我找不到一个像样的“发送者”和“接收者”示例。有人可以帮忙吗?
【问题讨论】:
标签: ios objective-c xcode cocoa cocoa-touch
在 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];
【讨论】:
与通知一起传递的用户信息对象只是一个 NSDictionary。在用户信息中传递 CGPoint 的最简单方法可能是使用 -numberWithFloat: 将 X 和 Y 坐标包装到 NSNumbers 中。然后,您可以在 userinfo 字典中使用 setObject:forKey:,例如使用 Xpos 和 Ypos 作为键。
你可以在 NSMutableDictionary 上将它包装成一个不错的类别,使用 setFloat:forKey 之类的方法...
【讨论】: