我需要对字符串数组进行排序,并希望访问比较器块中的viewController
属性。因此,计划将ViewController
对象传递给比较器块。如何将参数传递给比较器模块?
这里是代码。
由于比较器逻辑很长,并且排序在很多地方都被使用,所以我不能在声明中扩展comparatorBlock。
sortedArray = [NsMutableArray arrayWithArray:[unsortedArray sortedArrayWithOptions:0 usingComparator:comparatorBlock]];
2条答案
按热度按时间xv8emn3q1#
如果你在视图控制器的方法中定义块,那么它应该能够访问
self
。如果你做不到这一点,你可以创建一个函数来返回代码块,并将视图控制器捕获为函数参数:
你可以这样使用它:
nkkqxpd92#
altom's answer给了我一个构建错误,“正在返回本地堆栈上的块”。
这可以通过将块 Package 在Block_copy()中来解决,如nielsbot's answer to a similar question。
本例使用的是MRR而不是ARC,因此添加了自动释放。