FontAwesomeKit — «NSInvalidArgumentException» iOS 7.1.1

Я использую классную библиотеку FontAwesomeKit (https://github.com/PrideChung/FontAwesomeKit) для моего нового приложения для iOS. Но я застрял со странным исключением, которое выдает только в режиме выпуска и моем iPhone с iOS 7.1.1.

Это выглядит как:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: 'NSConcreteMutableAttributedString addAttribute:value:range:: nil value'

Когда я тестирую в симуляторе (как DEBUG, так и RELEASE) и iPhone (DEBUG), все работает нормально, iPhone (RELEASE) падает.

Этот обходной путь не помог — https://github.com/PrideChung/FontAwesomeKit/blob/master/KnownIssues.md

Спасибо!

ОБНОВЛЕНИЕ

Проблема была в моем коде и ссылке __weak:

__weak UIColor *menuColor = [UIColor colorWithHexString:@"#636577"];
__weak UIColor *menuColorHover = [UIColor colorWithHexString:@"#3D3F52"];
CGFloat icon_size = 25.5f;

for (UIButton *button in self.buttons) {
    if ([button.titleLabel.text isEqualToString:@"Feed"]) {
        FAKFoundationIcons *feedIcon = [FAKFoundationIcons homeIconWithSize:icon_size];

        [feedIcon addAttribute:NSForegroundColorAttributeName value:menuColor];
        [button setImage:[feedIcon imageWithSize:CGSizeMake(icon_size, icon_size)] forState:UIControlStateNormal];

        [feedIcon addAttribute:NSForegroundColorAttributeName value:menuColorHover];
        [button setImage:[feedIcon imageWithSize:CGSizeMake(icon_size, icon_size)] forState:UIControlStateHighlighted];
    }

person Kosmetika    schedule 10.05.2014    source источник
comment
Символизируйте отчет о сбое и посмотрите, где в вашем приложении происходит сбой.   -  person rmaddy    schedule 10.05.2014
comment
Я вижу, где это [feedIcon addAttribute:NSForegroundColorAttributeName value:menuColor];   -  person Kosmetika    schedule 10.05.2014
comment
Казалось бы, menuColor это nil. Вам нужно определить, почему.   -  person rmaddy    schedule 10.05.2014
comment
да.. это потому, что я определил его как слабый - __weak UIColor *menuColor = [UIColor colorWithHexString:@"#636577"];..   -  person Kosmetika    schedule 10.05.2014
comment
но он хорошо работал на симуляторе и отладке iphone, не могли бы вы объяснить, почему я не могу использовать здесь weak? Я думал, что это сэкономит немного памяти.. код выглядел следующим образом __weak UIColor *menuColor = [UIColor colorWithHexString:@"#636577"]; CGFloat icon_size = 25.5f; for (UIButton *button in self.buttons) { FAKFoundationIcons *feedIcon = [FAKFoundationIcons homeIconWithSize:icon_size]; [feedIcon addAttribute:NSForegroundColorAttributeName value:menuColor];   -  person Kosmetika    schedule 10.05.2014
comment
Вместо этого было бы лучше отредактировать ваш вопрос. Было бы более читабельно.   -  person Larme    schedule 10.05.2014
comment
обновил, посмотри пожалуйста   -  person Kosmetika    schedule 10.05.2014


Ответы (1)


Вам не нужно __weak там.

Как вы сказали в комментариях, это работало в отладочных сборках, поскольку оптимизаций не было, но в выпускных сборках компилятор решил оптимизировать слабые ссылки, оставив вам nil в качестве аргумента.

Просто избавьтесь от ненужного модификатора __weak и все будет хорошо.

person Gabriele Petronella    schedule 10.05.2014