2011-01-06 14 views
6

最近私はAirPrintによる印刷を導入しましたが、4.2より前のバージョン(明らかに)のサポートを中止したくありませんでした。ゲームセンターのようなものの前にそれをやった。私がこのケースで特に奇妙に見いだしたのは、弱いリンクUIKitでなければならなかったことだった。印刷は独自のフレームワークには含まれていないため、より細かく扱うことができます。ウィークリンクファウンデーションとUIKit?

これはちょうど私が問題を解決しても、アプリがすべてのバージョンで正常に動作することを可能にしているにもかかわらず、まったく気に入らなかった。 Apple's SDK Compatibility Guide

彼らは述べる:あなたのデプロイメント・ターゲットで利用可能 あるフレームワークを使用する場合

、 あなたは(弱いそれをリンクしていない と)そのフレームワークを必要とすべきです。

UIKitにはそれが奇妙に思える右のことなどUIPrintInfoUIPrintInteractionController

アムIとクラスは、弱く、このようなコアフレームワークをリンクするだけではない、利用可能のですか?より良い方法がありますか?

+0

あなたはまだこの答えを見つけましたか? NS_CLASS_AVAILABLEを使用すると、クラスの型をまだ宣言しておらず、まずそのクラスをテストしていれば問題ありません。 http://goo.gl/6yH4Uとhttp://goo.gl/FiOd9の2つのリンクを作成しましたが、まだ適切な解決策が見つかりませんでした。 –

答えて

2

良い方法があります。 iOS 4.2ではこの目的でNS_CLASS_AVAILABLEが導入されましたが、使用にはいくつかの制限があります。すべての詳細は以下にリンクされているマニュアルに記載されています:

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

+0

これをより具体的にするには、[UIPrintInfoクラス]を使用して実行時にテストします。これが古いシステムではなく、印刷機能をスキップ/ディスエーブルする必要がない場合はテストします。 –

+0

@スティーブン・クレイマー:私も同じ問題があります。私は使用します - (BOOL)canPrint { BOOL result = NO; \tクラスprintClass =(NSClassFromString(@ "UIPrintInteractionController")); \t if(printClass!= nil){ \t \t result = [UIPrintInteractionController isPrintingAvailable]; \t} 返品の結果; }。次に、[self print]をテストして印刷機能を有効/無効にしますが、機能しません。 iOS 3.1.3でipod touchで試してみました。私はNSClassFromString(@ "UIPrintInfo")でも試しましたが、何もありませんでした。あなたは何か提案しますか? – Sefran2

+0

「うまくいかない」とはどういう意味ですか?リンクエラー?動的リンクエラー?あるいは、テストは 'YES'を返すべきところで' NO'を返すか、あるいはその逆ですか? –