【发布时间】:2012-06-25 17:29:27
【问题描述】:
我想传递 2 个变量:
UIImage * img
int i
进入另一个只需要 (void *) 的方法
我尝试制作一个包含 img 和 i 的 C 结构
struct MyStruct {
UIImage *img;
int i;
}
但是 xcode 给我一个错误提示“ARC forbids Objective-C objects in structs or unions”
接下来我尝试编写一个包含 img 和 i 的 Objective-c 类 MyStruct2,分配初始化它的一个实例并将其类型转换为 (__bridge void*),然后将其传递给方法。我的用例似乎很少涉及。似乎应该有更好的方法。
实现这一目标的最简单方法是什么?
谢谢。
基于 cmets 进行编辑:我必须使用 void *,因为它是 UIView API 所要求的。我创建了 UIVIew API 提到的选择器
+ (void)setAnimationDidStopSelector:(SEL)selector
请参阅http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html 上的 setAnimationDidStopSelector 文档。它说...选择器应采用以下形式:
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
我想将 img 和 i 都传递给 (void *)context 参数。
【问题讨论】:
-
为什么不改变你传递给他们的方法?
-
只是出于好奇,为什么不改变方法本身呢?
-
@Anne 可能他正在使用 pthreads 并且回调只能采用 1 个参数。
标签: objective-c ios