我已经意识到几个列表视图控制器的行为方式相同,现在我想将它们抽象为一个通用的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];