2011-01-06 2 views
6

Недавно я опубликовал печать через AirPrint, но не хотел отказываться от поддержки версий до 4.2 (очевидно). Сделал это раньше для таких вещей, как Game Center и т. Д. То, что я обнаружил особенно странным в этом случае, было связано с слабым соединением UIKit. Печать не содержалась в ее собственных рамках, что позволяло мне быть более гранулированным.Слабая связь и UIKit?

Это просто не понравилось, хотя оно решает мою проблему, позволяющую приложению нормально работать на всех версиях.

В Apple's SDK Compatibility Guide они заявляют:

При использовании структуры, которая доступна в вашей цели развертывания, вы должны требовать, чтобы рамки (и не слабо связать его).

UIKit является доступны, просто не классы, такие как UIPrintInfo, UIPrintInteractionController и т.д.

Правильно ли я, что это кажется странным, слабо связать такую ​​базовую основу? Есть ли способ лучше?

+0

вы нашли ответ на этот вопрос еще? Похоже, что использование NS_CLASS_AVAILABLE в порядке, если вы еще не объявили тип класса и сначала протестировали его. отработав эти 2 ссылки: http://goo.gl/6yH4U и http://goo.gl/FiOd9 Я до сих пор не нашел подходящего решения. –

ответ

2

Существует лучший способ. iOS 4.2 представил NS_CLASS_AVAILABLE для этой цели, но есть некоторые ограничения на его использование. Все подробности указаны в документации, связанной с ниже:

http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html

+0

Чтобы сделать это более конкретным: тест во время выполнения с использованием [UIPrintInfo class], если это возвращает нуль, вы находитесь в старой системе и должны пропускать/отключать свои функции печати. –

+0

@Steven Kramer: У меня такая же проблема. Я использую - (BOOL) canPrint { BOOL result = NO; \t Класс printClass = (NSClassFromString (@ "UIPrintInteractionController")); \t if (printClass! = Nil) { \t \t результат = [UIPrintInteractionController isPrintingAvailable]; \t} результат возврата; }. Затем я тестирую [self print], чтобы включить/отключить функцию печати, но это не сработает. Я пробовал его на iPod touch с ios 3.1.3. Я также пытался использовать NSClassFromString (@ "UIPrintInfo"), но ничего. Есть ли у вас какие-либо предложения? – Sefran2

+0

Что вы подразумеваете под «не работает»? Связанные ошибки? Динамические ошибки связывания? Или тест просто возвращает «НЕТ», где он должен возвращать «ДА» или наоборот? –