将类传递给函数

时间:2012-11-12 09:39:46

标签: iphone ios

我有一个函数可以创建一些不同的NSOperation子类。

它们都使用相同的参数,唯一不同的是类名。

目前我已经有了一个函数,其中包含一个重复的代码块。是否可以将Class传递给函数,以便函数可以为我创建对象?

- (void)createOperationSubclass:(Class*)class withParam:(int)parameter
{
    class *operation = [[class alloc] init];

    operation.parameter = parameter;

    [self.queue addOperation:operation];
}

或类似的东西?即一个不关心类是什么的通用类加载器。

然后我可以跑...

[self createOperationSubclass:MyOperationSubclass withParam:10];
[self createOperationSubclass:MyOtherOperationSubclass withParam:5];

3 个答案:

答案 0 :(得分:2)

为什么不进行if / else组合,看看你用哪个班级

if ([myObject isKindOfClass:[AnObject class]]) {
    // create object
}

那会不会那么容易?

答案 1 :(得分:2)

试试这个:

- (void)createOperationSubclass:(Class)aClass withParam:(int)parameter
{
    id operation = [[aClass alloc] init];

    [operation setParameter:parameter];

    // If your parameter is an NSNumber: [operation setParameter:@(parameter)];

    [self.queue addOperation:operation];
}

然后你就这样称呼它:

[self createOperationSubclass:[WhateverClass class] withParam:1];

PS:请注意,class是保留关键字,因此已更改为aClass

答案 2 :(得分:2)

使用像

这样的API
   NSStringFromClass(Class aClass);

NSClassFromString(NSString *aClassName);