2010-10-19 2 views
1

Я делаю некоторые UIView анимации вещи, используяЧто может быть передано в (void *) контексте?

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

Что касается следующего вопроса: Apple rejected app because of animationDidStop:finished:context: is a non-public api

Я реализовал свой собственный метод, как «setAnimationDidStopSelector».

Мой вопрос касается контексте: (void *) context параметр. Apple, определяет его следующим образом:

Дополнительного приложением поставляемые информации, которая передается в анимации делегатами сообщений, в селекторов устанавливаются с помощью setAnimationWillStartSelector: и setAnimationDidStopSelector: методы.

Мне интересно, что король вещи может быть передан как контекст. Я относительно новичок в программировании Objective-C и C и немного потерял тип void *.

Можно ли передать в какой-либо аргументации, объекты NSDictionnary, NSString и т.д.

Благодаря

ответ

3

void * является указателем на что-нибудь. Вы можете передать указатель на любой объект или на другие материалы, такие как непрозрачный тип структуры или Core Foundation. Чтобы избавиться от предупреждения компилятора, отлитый указатель void *:

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

Имейте в виду, что метод не имеет представления о том, что context содержит и, таким образом, не будет сохранять его или иным образом позаботиться о правильном managemnet памяти. Вы должны убедиться, что вещь, которую вы передаете в context, все еще существует, когда вызывается методы делегирования анимации.

+0

Ok спасибо за ваш ответ, это звучит ясно, и я просто нашел этот вопрос http://stackoverflow.com/questions/1304176/objective-c-difference-between-id-and-void/1304277#1304277 – jchatard

0
context:(void *)myDictionary]; 

При вызове этого метода и пытается передать

(void *)[NSNumber numberWithInt:5] - 

Xcode предлагает сделать некоторые _bridge из-за недопустимого pointerCast от С до Objective-C ...

 Смежные вопросы

  • Нет связанных вопросов^_^