繁体   English   中英

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

[英]What can be passed in (void *)context?

我正在使用一些UIView动画

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

关于以下问题: 苹果因为animationDidStop:finished:context:拒绝了该应用程序:是一个非公共api

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

我的问题是关于context:(void *)context参数的。 苹果将​​其定义如下:

传递给动画委托消息的应用程序提供的其他信息-使用setAnimationWillStartSelector:和setAnimationDidStopSelector:方法设置的选择器。

我想知道什么东西可以作为上下文传递。 我对Objective-C和C编程比较陌生,并且对void *类型有点迷茫。

我们可以传入任何类型的参数,对象,NSDictionnary,NSString等吗?

谢谢

void *是指向任何内容的指针。 您可以将指针传递到任何对象或其他东西,例如结构或Core Foundation不透明类型。 要摆脱编译器警告,请将指针强制转换为void *

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

请注意,该方法不知道context包含什么内容,因此将无法保留该context ,否则会注意正确的内存管理。 您必须确保传递给context在调用动画委托方法时仍然存在。

context:(void *)myDictionary];

调用此方法并尝试通过时

(void *)[NSNumber numberWithInt:5] - 

xCode建议由于从C到Objective-C的指针指针无效而建立一些_bridge ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM