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

例如,如果我需要客户列表,我会做类似的事情:

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


在ListVC中,有时需要知道某些对象的类类型。在我的示例中,数组self.customersList中的对象来自类CustomerClass。我知道我可以convert strings to class names,但是当ListVC中有一个需要返回对象类型的方法时,这无济于事。例如,在ListVC中,此旧的非抽象方法:

- (CustomerClass *)customerAfterFilter


应该是这样的:

- (self.objectClass *)objectAfterFilter


像这样实例化之后,我将设置objectClass。

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


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

最佳答案

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

- (id)objectAfterFilter


编辑:

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


或者:

[((Customer *)[customersVC objectsAfterFilter]) doCustomerStuff];

09-09 21:34