我正试图编写代码来简化在内部工具构建中添加新功能的代码。有一个UITableView,每个单元格都是一个功能的按钮,可以延伸到另一个视图中。如何调用一个id类对象的方法?
每个函数都在它自己的类文件中。目前,这是我做这件事的方式。
在视图控制器,I中的方法初始化类,然后我原因请看成其视图控制器
- (void)resetButtonTouched {
[ResetClass *reset = [[ResetClass alloc] initWithNumber num];
[self.navigationController pushViewController: reset animated: YES];
}
然后用于的cellForRowAtIndexPath我在didSelectRowAtIndexPath方法创建单元
cell.textLabel.text = @"Reset";
然后创建按钮响应
而我这样做的10其他函数,所以
[Function2 * function2 = [[Function2 alloc] initWithNumber num]; [Function3 * function3 = [[Function2 alloc] initWithNumber num];
等等
我想简化这个,所以我只能在一个地方登记类,它会自动增加该小区并连接按钮。对于cellForRowAtIndexPath和didSelectRowAtIndexPath,我可以根据indexPath.row来查看数组。但是,我需要一种方法将类对象存储在数组中,并在调用时初始化它们。
我想我可以有一个被这里加入到有类方法的每个功能会
- 返回一个标题(为的cellForRowAtIndexPath按钮标题)
- 的类名(NSClassFromString所以我可以确定数组中的类对象的类)
和一个正常的方法被调用后,初始化完成它的东西。
我想写的东西在那里,如果我只写两行,
ResetFunction *reset;
[self registerFunction:reset];
它会做的一切,我没有以上(创建工作按钮调用类对象)
我m想到有一个数组可以存储所有不同的类对象,称之为allFunctions
,而方法runFunction
将执行初始化和继续。然后在cellForRowAtIndexPath
它会只是
cell.textLabel.text = [allFunctions[indexPath.row] getTitle];
和didSelectRowAtIndexPath方法,它会调用[_viewController runFunction:allFunctions[indexPath.row]];
我会怎么做呢?我试图用id *
参数创建一个方法,该参数采用类对象,意图将其存储在数组中allFunctions
我无法制作将存储所有函数的方法,因为它给了我“隐式转换当我尝试调用[self registerClass:reset]时,不允许ARC使用非目标c指针来自动释放id。
我该怎么办?