Tôi đang sử dụng TTTAttributedLabel lớn (https://github.com/mattt/TTTAttributedLabel) mà hoạt động tốt dưới iOS 5. Theo iOS 6 tuy nhiên, tôi nhận được lỗi:(NSCFType bộ) - selector không được nhận ra trong 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'
Sau khi nghiên cứu các phát hành một chút, có vẻ như thông báo đã được gửi đến một đối tượng đã được phát hành. Sử dụng trình gỡ lỗi, tôi có po'd 0x200020e0 mà dường như là một CTFontRef.
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"}
}
Điều này dẫn tôi thẳng vào mã đó thiết lập các TTTAttributedLabel:
[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;
}];
như trong ví dụ sử dụng ở đây:
https://github.com/mattt/TTTAttributedLabel
Đó là mã không được phân loại vì vậy tôi đã thêm vào trong các phôi cầu nối (xem ở trên). Tôi đã cố gắng giữ lại tất cả các nơi nhưng điều đó dường như không giải quyết vấn đề (mà dường như) rằng CTFontRef là nhận được phát hành quá sớm (tôi nghĩ rằng - đề nghị khác chào đón).
Bất kỳ ý tưởng nào về cách giải quyết vấn đề này và lý do tại sao điều này chỉ xuất hiện trong trình mô phỏng iOS 6? Cảm ơn trước.
Xin lỗi, chỉ cần nhận thấy rằng chỉnh sửa ở đó không có ý nghĩa gì nhiều .. Không thể nhớ khóa nào tôi muốn nói nhưng bạn có thể tìm ra trong trường hợp của mình. Về cơ bản không sử dụng các khóa không dùng nữa! – CMash