2011-02-04 7 views
0

私は非常に奇妙な状況に対処しています。私は、私のiOSアプリケーションにAttributed Stringsを実装しています。私は、それらがiOS 3.2以上で利用できるという警告を出していました。私はまだiPhoneで3.1.3をサポートしているので、私はCoreTextを弱くリンクしなければならないことを知っていました。iOS 3.1.3のNSMutableAttributedString

私はフレームワークを弱くリンクしましたが、好奇心のせいでクラスをそのまま使用し、3.1.3デバイスで実行しました...うまくいきます。何が私はここに行方不明、私は混乱しているなぜこれはクラッシュしていないです。私はこれが3.1.3デバイスであることを100%確信していますが、NSMutableAttributedStringは3.1.3の隠れたクラスなので、objective-cの動的性質のため実際には動作しますか?

答えて

0

ちょうどクラッシュするのではなく、実際には機能しましたか?

設定によっては、存在しないクラスがちょうどnilになります。 Objective-Cではnilにメッセージを送信できます。次に、nilまたは0を返します。その後、[[NSAttibutedString alloc] init]はちょうどnilを返すかもしれませんが、クラッシュすることはありません。

+0

私は情報の次の作品を提供している必要があり、(AliSoftware @ https://github.com/AliSoftware/OHAttributedLabelから)OHAttributedLabelを、作成している私は特にやってる このUILabelサブクラスはNSAttributedStringsを使用しています。 NSMutableAttributedStringを作成し、OHAttributedLabelを作成し、NSAttributedStringプロパティを属性付き文字列に設定しました。 デバイスがNSAttributedStringが何であるかわからなくても、NSAttributedStringプロパティでオブジェクトをインスタンス化すると機能するでしょうか? ... 'によって'私はクラッシュしないことを意味します – rrenna

1

私はOHAttributedLabelクラスの著者です。 ありがとうございます!

OHAttributedLabelがCoreTextフレームワークを使用してNSAttributedStringsを画面に描画するため、あなたの持つ動作は奇妙です。

CoreTextはiOS 3.2以降でしか使用できないため、これはiOS 3.2、特にiOS 3.1.3 ...で動作する可能性があります。

0

CoreTextはiOS 3.2で導入されました。弱いリンクであれば、アプリケーションは起動しますが、CoreText関数を呼び出すと、最初のインスタンスでクラッシュします。

以前のバージョンとの互換性を維持するには、代わりにQuartzでテキストを描画してCTコードを弱くすることができます。デバイスにCTが存在するかどうかを検出し、そうであればそれを使用します。そうしないと、図面に対して粗いフォールバックメカニズムが適用されます。

関連する問題