0

我已经意识到我的几个列表视图控制器的行为方式相同,现在我想将它们抽象为一个名为 ListVC 的通用控制器。计划是在需要时创建 ListVC 的实例,并将该实例所需的所有特定内容传递给它。

例如,如果我需要一个客户列表,我会执行以下操作:

ListVC *customersVC = [[ListVC alloc] init];
customersVC.tableArray = self.customersList

在 ListVC 中,有时我需要知道某个对象的类类型。在我的示例中,数组self.customersList中的对象来自 class CustomerClass。我知道我可以将字符串转换为类名,但是当我在 ListVC 中有一个需要返回对象类型的方法时,这无济于事。例如,在 ListVC 中,这个旧的非抽象方法:

- (CustomerClass *)customerAfterFilter

应该是这样的:

- (self.objectClass *)objectAfterFilter

而且我会在它像这样实例化之后设置 objectClass 。

ListVC *customersVC = [[ListVC alloc] init];
customersVC.tableArray = self.customersList    
customersVC.objectClass = [CustomerClass class];

我该怎么做这样的事情?或者,如果我的方法是错误的,请提出正确的方法。我是编程初学者。

4

1 回答 1

2

您不能像那样更改返回类型。您可以做的是返回一个id,它是指向任何类的对象的指针。

- (id)objectAfterFilter

编辑:

Customer *c = [customersVC objectsAfterFilter];
[c duCustomerStuff];

或者:

[((Customer *)[customersVC objectsAfterFilter]) doCustomerStuff];
于 2013-03-26T20:22:36.870 回答