NSMutableAttributedString на iOS 3.1.3 - PullRequest
       4

NSMutableAttributedString на iOS 3.1.3

0 голосов
/ 04 февраля 2011

Я имею дело с очень странной ситуацией.Я внедряю Attributed Strings в свое приложение iOS, и у меня было предупреждение, что они доступны для iOS 3.2 и выше.Поскольку я все еще поддерживаю 3.1.3 на iPhone, я знал, что мне нужно было слабо связать CoreText и, возможно, поэтому нужно было проверить ОС во время компиляции, прежде чем их использовать.класс как есть и запустил его на устройстве 3.1.3 ... и он работает.Что мне здесь не хватает, я так растерялся, почему это не сбой.Я на 100% уверен, что это устройство 3.1.3, но NSMutableAttributedString является скрытым классом в 3.1.3, и, таким образом, на самом деле работает из-за динамической природы target-c?

Ответы [ 3 ]

1 голос
/ 17 июня 2011

Я являюсь автором класса OHAttributedLabel.Спасибо за использование!

Ваше поведение странное, так как OHAttributedLabel использует инфраструктуру CoreText для рисования NSAttributedStrings на экране.

Поскольку CoreText доступен только с iOS 3.2, я не могупосмотрите, как это могло бы работать под iOS 3.2, особенно iOS 3.1.3…?

0 голосов
/ 19 июня 2011

CoreText был представлен с iOS 3.2. Если у вас есть слабая ссылка на него, приложение запустится, но при первом вызове функции CoreText произойдет сбой.

Чтобы все еще быть совместимым с более ранними версиями, вы МОЖЕТЕ использовать слабую ссылку и избегать кода CT, рисуя вместо этого текст с помощью Quartz. Вы бы обнаружили, если на устройстве есть КТ, и использовали бы его, если да, иначе у вас был бы грубый запасной механизм для вашего чертежа.

0 голосов
/ 04 февраля 2011

Это действительно сработало, а не просто не рухнуло?

В зависимости от настройки несуществующий класс становится просто nil. Обратите внимание, что в Objective-C вы можете отправить сообщение на nil. Тогда он просто возвращает nil или 0. Тогда [[NSAttibutedString alloc] init] может просто вернуть nil без сбоев.

...