Ich bin die große TTTAttributedLabel mit (https://github.com/mattt/TTTAttributedLabel), die unter iOS 5. Unter iOS 6 aber gut funktioniert, erhalte ich die Fehlermeldung:(NSCFType set) - Nicht erkannte Wähler in iOS 6
-[__NSCFType set]: unrecognized selector sent to instance 0x200020e0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- [__NSCFType set]: unrecognized selector sent to instance 0x200020e0'
die erforscht Nachdem Geben Sie ein wenig aus, scheint es so, als würde die gesetzte Nachricht an ein Objekt gesendet, das freigegeben wurde. Unter Verwendung des Debuggers habe ich 0x200020e0 angezeigt, was ein CTFontRef zu sein scheint.
po 0x200020e0
(int) $0 = 536879328 CTFont <name: .HelveticaNeueUI-Bold, size: 20.000000, matrix: 0x0>
CTFontDescriptor <attributes: <CFBasicHash 0x20001900 [0x3c2a4100]>{type = mutable dict, count = 1,
entries =>
1 : <CFString 0x3be2a768 [0x3c2a4100]>{contents = "NSFontNameAttribute"} = <CFString 0x3c292c14 [0x3c2a4100]>{contents = ".HelveticaNeueUI-Bold"}
}
Dies führte mich direkt auf den Code, der die TTTAttributedLabel aufstellt:
[label setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^ NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) {
NSRange boldRange = [[mutableAttributedString string] rangeOfString:title options:NSCaseInsensitiveSearch];
NSRange strikeRange = [[mutableAttributedString string] rangeOfString:@"sit amet" options:NSCaseInsensitiveSearch];
UIFont *boldSystemFont = [UIFont boldSystemFontOfSize:20];
CTFontRef font = CTFontCreateWithName((__bridge CFStringRef)boldSystemFont.fontName, boldSystemFont.pointSize, NULL);
if (font) {
[mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(__bridge id)font range:boldRange];
[mutableAttributedString addAttribute:(NSString*)kCTForegroundColorAttributeName value:(__bridge id)font range:boldRange];
CFRelease(font);
}
return mutableAttributedString;
}];
wie im Beispiel für die Verwendung hier:
https://github.com/mattt/TTTAttributedLabel
Dieser Code ist nicht arcifiziert, also habe ich in überbrückte Casts hinzugefügt (siehe oben). Ich habe versucht, behält überall, aber das scheint nicht das Problem zu lösen (was zu sein scheint), dass die CTFontRef zu früh freigegeben wird (ich denke - andere Vorschläge willkommen).
Irgendwelche Ideen, wie man das löst und warum das nur unter dem iOS 6 Simulator auftaucht? Danke im Voraus.
Sorry, gerade bemerkt, dass die Bearbeitung dort nicht viel Sinn macht .. Kann mich nicht erinnern, welche Schlüssel ich meinte, aber Sie könnten in Ihrer Situation herausfinden. Verwenden Sie grundsätzlich keine veralteten Schlüssel! – CMash