【发布时间】:2015-04-03 22:27:24
【问题描述】:
我想创建一个自动创建UITableViewCell 的类注册表类,当用户按下按钮时,它将转到该类并运行代码。
目前要做这样的事情,在视图控制器中我必须做这样的事情
Function1Class *function = [[Function1Class alloc] init];
function.view.backgroundColor = [self veryLightGrayColor];
[self.navigationController pushViewController: menu animated: YES];
然后在数据源中我在cellForRowAtIndexPath 中创建一个新案例,在委托中我在didSelectRowAtIndexPath 中创建一个案例以进行单行方法调用。
我想更改代码,以便任何想要向此页面添加新类的人都可以在一个地方进行,例如:
Function1 *function;
[self addClass:function];
而在addClass中传入的“函数”将存储在一个数组中
对于cellForRowAtIndexPath 和didSelectRowAtIndexPath 情况,它们可以通过存储在数组中轻松调用正确的方法。
问题是如何自动初始化传入addClass的每个类对象?
我可以让用户编写这样的代码添加到他们的类中
Function1 *function = [[Function1 alloc] init];
[self addClass:function];
然后类对象已经初始化,但这意味着在启动期间每个类对象都被初始化,如果有很多类,这是一个问题。如何从数组中取出一个类对象,然后初始化它以使用它?类对象都是不同的类,所以我不能硬编码arrayOfClassObjects[i] = [[Function1 alloc] init];
谢谢
【问题讨论】:
-
可以使用反射吗?
[[NSClassFromString(@"ClassNameOnlyKnownAtRuntime") alloc] init]之类的东西? -
^这可能很有希望。让我试试看。
标签: ios objective-c generic-programming