2010-10-19 39 views
1

我正在使用什么可以在(void *)上下文中传递?

[UIView beginAnimations:nil context:nil]; 
// ... Animation configuration ... 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(animationEnded:finished:context:)]; 
[UIView commitAnimations]; 

关于以下问题的一些UIView的动画东西:Apple rejected app because of animationDidStop:finished:context: is a non-public api

我实现我自己的方法为“setAnimationDidStopSelector”。

我的问题是关于上下文:(void *)上下文参数。苹果它定义如下:

传递到 动画代表附加应用程序提供的信息 消息-的 选择使用 setAnimationWillStartSelector设置:与 setAnimationDidStopSelector:方法。

我想知道什么国王的东西可以通过作为上下文。我对Objective-C和C编程比较陌生,并且在void *类型方面有点遗憾。

我们可以通过在任何类的说法,对象,NSDictionnary,的NSString的,等

感谢

回答

3

void *是指向什么。您可以将指针传递给任何对象或其他东西,如结构或Core Foundation不透明类型。为了摆脱编译器警告,投指针void *

... context:(void *)myDictionary]; 

注意,该方法具有不知道什么context含有,因此不会保留或以其他方式关心正确的内存managemnet。在调用动画委托方法时,您必须确保您传递给context的内容仍然存在。

+0

好,谢谢,这听起来很清楚,我只是发现这个问题http://stackoverflow.com/questions/1304176/objective-c-difference-between-id-and-void/1304277#1304277 – jchatard 2010-10-19 10:34:12

0
context:(void *)myDictionary]; 

调用此方法时,并试图通过

(void *)[NSNumber numberWithInt:5] - 

Xcode的建议做出,因为从C到Objective-C的无效pointerCast的一些_bridge ...你的答案