TTTAttributedLabel:链接崩溃。 [NSConcreteAttributedString reverseObjectEnumerator]:无法识别的选择器发送到实例0x8eb7f60'

时间:2014-08-14 18:07:04

标签: ios hyperlink uilabel nsattributedstring tttattributedlabel

使用聊天应用程序。在我的自定义Cell中使用TTTAttributedLabel。这样我就能检测出链接。我在自定义单元格中实现了该代码。

    self.tttAttributedLabel=[[TTTAttributedLabel alloc] init];
    self.tttAttributedLabel.font = [UIFont systemFontOfSize:14.0];
    self.tttAttributedLabel.numberOfLines = 0;
    self.tttAttributedLabel.lineBreakMode = NSLineBreakByWordWrapping;
    self.tttAttributedLabel.linkAttributes = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:(__bridge NSString *)kCTUnderlineStyleAttributeName];
    self.tttAttributedLabel.enabledTextCheckingTypes = NSTextCheckingTypeLink; 
    self.tttAttributedLabel.delegate = self;
    [self.contentView addSubview:self.tttAttributedLabel];

我在下面的功能崩溃了。我不知道为什么会崩溃。似乎self.links不是一个有效的数组。

  - (NSTextCheckingResult *)linkAtCharacterIndex:(CFIndex)idx
{
     NSEnumerator *enumerator = [self.links reverseObjectEnumerator]; //crash on this 
   NSTextCheckingResult *result = nil;
   while ((result = [enumerator nextObject])) {
    if (NSLocationInRange((NSUInteger)idx, result.range)) {
        return result;
    }
}
return nil;
}

Chat

1 个答案:

答案 0 :(得分:0)

即使您传入initWithFrame:作为框架,也应使用指定的初始值设定项CGRectZero。您正在使用init,它不会执行初始化links属性的公共初始化方法。