将struct传递给performSelector:withObject:afterDelay:

blu*_*nd1 5 struct objective-c

我有一个struct Position,像这样:

typedef struct Position { int x, y; } Position;
Run Code Online (Sandbox Code Playgroud)

我怎么能在NSObject中传递它performSelector:withObject:afterDelay:?像这样:

Position pos;
pos.x = pos.y = 1;
[self performSelector:@selector(foo:)
           withObject:pos               // ERROR
           afterDelay:5.0f];
Run Code Online (Sandbox Code Playgroud)

编辑:更改代码以修复拼写错误

Fug*_*gly 9

嗯..使用CGPoint之类的东西

[self performSelector:@selector(foo:) 
           withObject:[NSValue valueWithCGPoint:CGPointMake(pos.x, pos.y)] 
           afterDelay:5.0f];
Run Code Online (Sandbox Code Playgroud)

再读一遍

NSValue v;
CGPoint point = [v CGPointValue];
Run Code Online (Sandbox Code Playgroud)

或者完全离开Position课程,CGPoint也是如此


小智 3

您可以使用NSValue类包装您的自定义类型。错误是您没有提供对该方法的对象引用。

尝试使用NSValue+(NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type;类方法。另一方面,您可以使用 检索该值-(void)getValue:(void *)buffer;