2015-07-27 2 views
0

Я задал более конкретный вопрос over here, но он катится среди перекати-полевых.Использование углерода в приложениях для какао?

Может быть, я могу получить ответ на более общий вопрос:

углерода устаревшим и 32-бит только, как плохо идеи это вызвать API-интерфейсы углерода в противном случае полностью 64-битный, современный Какао-приложение?

  • Будет ли это отменять любые улучшения, которые приносит 64-битное исполнение?
  • Не могли бы они подвергнуться анализу процесса MAS и внести вклад в отключение приложения от Mac App Store?

Я понимаю, что вы, вероятно, не должны этого делать, я говорю о ситуации, когда import Carbon - это единственный способ добиться чего-то. Является ли функция все еще стоящей на этом этапе?

+0

Возможный дубликат [Текущее состояние глобальных «горячих клавиш»?) (Http://stackoverflow.com/questions/31612753/current-status-of-global-hot-key-shortcuts) – vikingosegundo

+0

Чувак, это не возможный дубликат, это мой вопрос, который я связал с собой в первой строке моего вопроса. – magiclantern

+0

Я приветствую объяснение любого другого способа, которым я мог бы справиться с этим. У другого вопроса не было ответов, поэтому «этот вопрос может уже иметь ответ здесь:« просто неверно. – magiclantern

ответ

1

Вы просто не можете вызвать функции Carbon из 64-разрядного приложения. Ссылка не сработает (если компиляция еще не сработала). В лучшем случае вы можете положить материал Carbon в вспомогательный инструмент, с которым вы разговариваете с трубой или что-то в этом роде. И да, Apple заявила, что использование устаревших API может привести к тому, что приложение будет отклонено Mac App Store.

+0

Благодарим вас за ответ. Но тогда как приложения в App Store, такие как OmniFocus и Fantastical, делают глобальные горячие клавиши, когда это не что-то доступно в Cocoa? – magiclantern

+3

Насколько я могу судить по заголовкам 10.7 SDK, 'RegisterEventHotKey' является одним из маленьких битов Carbon, который на самом деле * * доступен в 64 бит. По крайней мере, множество других функций в заголовке CarbonEvents.h помечены символом '#if! __ LP64__', и это не так. Но можно было бы использовать глобальную «горячую клавишу», используя вместо этого «Кварц»; см., например, 'CGEventTapCreate'. – JWWalker

+0

Спасибо, это очень полезно. И ответ, и как вы его получили. – magiclantern

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