Вот она, золотая середина между полным отсутствием автоматической проверки и полным покрытием всего проекта тестами :) Как всегда, все гениальное — просто. Спасибо за идею!
Быть может стоило использовать в данном случае Driver Library вместо создания фабрики? Судя по документации это весьма подходящее и элегантное решение в данной ситуации. Я конечно могу ошибаться…
спасибо за познавательную и полезную статью
однако хочу сделать одно замечание: на ios 5 данная конструкция NSDictionary *textAttributes = @{(NSString *)kCTFontAttributeName : [UIFont systemFontOfSize:16]};
является некорректной, ибо CoreText не умеет работать с UIFont и при попытке отобразить строку с такими атрибутами вылетает EXC_BAD_ACCESS.
Вместо этого необходимо применять CTFont, который не является toll-free bridged по отношению к UIFont. Вот пример конвертации который я применил в своем случае:
UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize];
NSDictionary * boldAttrs = @{(NSString *)kCTFontAttributeName:(__bridge id)CTFontCreateWithName((__bridge CFStringRef)boldFont.fontName, boldFont.pointSize, NULL)};
Вообще «молния два раза в одно и тоже место не бьет». Я думаю это весьма редкий случай, и соответственно, весьма редкий опыт. И кстати, данные тулзы в основном можно использовать для автоматизации использования инстансов с помощью, например, простейших shell скриптов.
однако хочу сделать одно замечание: на ios 5 данная конструкция
NSDictionary *textAttributes = @{(NSString *)kCTFontAttributeName : [UIFont systemFontOfSize:16]};
является некорректной, ибо CoreText не умеет работать с UIFont и при попытке отобразить строку с такими атрибутами вылетает EXC_BAD_ACCESS.
Вместо этого необходимо применять CTFont, который не является toll-free bridged по отношению к UIFont. Вот пример конвертации который я применил в своем случае:
UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize]; NSDictionary * boldAttrs = @{(NSString *)kCTFontAttributeName:(__bridge id)CTFontCreateWithName((__bridge CFStringRef)boldFont.fontName, boldFont.pointSize, NULL)};