[英]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.