別のクラスのsetViewPointCenterをトリガーするあるクラスのsetPositionというメソッドでNotificationを起動しようとしています。しかし、私はそれと一緒にCGPointを送信しようとしています。しかし、Xcodeはそれを1ビット好きではありません。Cocoa:NSNotificationとNSDictionaryでCGPointを渡すときの問題
-(void)setPosition:(CGPoint)point
{
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"sp", point, nil];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"SpriteDidSetPosition"
object:self
userInfo:dict];
[super setPosition:point];
}
は別のクラスでは、このメソッドをトリガしますが、私は周りに掘ってきた示されたエラー
-(id) init{
// Usual stuff, blah blah blah...
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(setViewPointCenter:)
name:@"BownceSpriteDidSetPosition"
object:nil];
}
-(void) setViewPointCenter:(NSNotification *)notification
{
// ERROR: Invalid Initializer
CGPoint point = [[notification userInfo] valueForKey:@"sp"];
// more code here....
}
をスローし、この解決策を見つけたが、私はまだエラーを取得します。
-(void)setPosition:(CGPoint)point
{
// ERROR: Incompatile type for argument 1 of "Value With Point"
NSValue *pointAsObject = [NSValue valueWithPoint:point];
NSDictionary *dict = [[NSDictionary alloc]
initWithObjectsAndKeys:@"sp",
pointAsObject,
nil];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"SpriteDidSetPosition"
object:self
userInfo:dict];
[super setPosition:point];
}
これは私をナットにしています。そして、この
-(void)setPosition:(NSPoint)point
{
NSValue *pointAsObject = [NSValue valueWithPoint:point];
NSDictionary *dict = [[NSDictionary alloc] init];
[dict initWithObjectsAndKeys:@"sp", pointAsObject, nil];
[[NSNotificationCenter defaultCenter]
postNotificationName:@"SpriteDidSetPosition"
object:self
userInfo:dict];
[super setPosition:CGPointMake(point.x, point.y)];
}
取得のエラーを取り除くsetPositionのようNSPointにするCGPointを変更し、さらに私を混乱させるために、私はまだsetViewPointCenterにねじ込まれています。私が理解しているように、CGPointとNSPointは同じものに等しいはずですが、そうではありません。
辞書にCGPointを渡す方法の実例はありますか?私はそれを理解することはできません。
これはiPhone用ですが、違いがあります。
私は早くそれを見つけたと思うが、私はつまずいたこれはそれをより深く説明します。 http://stackoverflow.com/questions/1032726/nsnotification-userinfo-example – gargantuan