다른 클래스에서 setViewPointCenter를 트리거하는 한 클래스에서 setPosition 메서드를 사용하여 Notification을 실행하려고합니다. 그러나, 나는 그것과 함께 CGPoint를 보내려고 노력하고있다. 그러나 Xcode는 그것을 1 비트 좋아하지 않습니다.코코아 : 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