【发布时间】:2014-04-22 18:15:49
【问题描述】:
我有一个带有以下签名的方法:
- (void)takeIntsAndRecieveIntsAsync:(MyInt *__strong [])
completion:(void (^)(MyInt * __strong response[]))success;
我有几个问题:
1.如何在此方法中使用 NSInvocation 检索参数?
- (void)forwardInvocation:(NSInvocation *)invocation
我尝试了以下方法,但没有得到正确的值:
__unsafe_unretained MyInt *a[2];
[invocation getArgument:(void *) &a atIndex:index];
我可以有一个包含 n 个 int 对象的数组,所以我不应该硬编码 2. 如何在运行时确定对象数组的大小?我需要数组中的哨兵值来确定边界吗?
2。 __strong 限定符对于输入参数和块参数是否正确?请注意,块是异步的,将在稍后执行。
【问题讨论】:
-
为什么不用NSArray?
-
公平的问题,但我希望 API 表示它需要一个 MyInt 对象数组。 NSArray 将允许某人传入任何对象。
-
我仍然可以传递任何对象。只需使用 NSArray 让您的生活更轻松。
标签: ios arrays automatic-ref-counting nsinvocation message-forwarding