2010-10-19 38 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 ...你的答案