12

在下面的摘录中,

/*A ClassName with instanceMethod and ClassMethod  */

-(void)instanceMethod;

+(void)ClassMethod;

/*To call a instance method in background */

ClassName  class1obj = [ClassName alloc] init];

[class1obj performSelectorInBackground:@selector(instanceMethod) withObject:nil];

同样,如何在后台调用 ClassMethod 使用performSelectorInBackground

如果可能,请解释一下!请大伙儿牵手..

4

3 回答 3

18

打电话

[ClassName performSelectorInBackground:@selector(ClassMethod) withObject:nil];

因为类本身就是对象,所以这将起作用。

于 2012-11-28T04:46:02.870 回答
2

请尝试self代替班级名称

 [self performSelectorInBackground:@selector(methodTobeCalled) withObject:nil];

希望这对你有用

于 2012-11-28T06:36:50.417 回答
1

你应该看看GCD(Grand Central Dispatch),它解决了一般问题“如何在后台执行代码”。不管是调用类方法、调用实例方法、掷骰子、写入文件等等。

例子:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSLog (@"This is code running in the background");
    [MyClass someClassMethod];
    [myInstance someMethodWithInt:1 bool:YES string:@"some string"];
    NSLog (@"Finished with the background code");
});

适用于任意代码;无需使用选择器,无需编写方法只是为了让选择器在后台运行,无需将参数转换为 NSObject(您不能将 performSelector 与 int 或 BOOL 参数一起使用)。Xcode 会自动为你填写大部分内容。

于 2014-03-18T12:02:35.450 回答