 @IBDesignable public class INDLinkLabel: UILabel {
     
     override public var attributedText: NSAttributedString! {
-        didSet { cacheLinkRanges() }
+        didSet { processLinks() }
     }
     
     override public var lineBreakMode: NSLineBreakMode {

                    return URL
                }
                return nil
                }()
            if let URL = URL {
                self.layoutManager.ensureLayoutForCharacterRange(range)
                let glyphRange = self.layoutManager.glyphRangeForCharacterRange(range, actualCharacterRange: nil)
                ranges.append(LinkRange(URL: URL, glyphRange: glyphRange))
            }
        }
        linkRanges = ranges
    }
    
    // MARK: Drawing

    }
    
    // MARK: Attributes

    private func processLinks() {
        var ranges = [LinkRange]()
        textStorage.setAttributedString(attributedText)
        textStorage.enumerateAttribute(NSLinkAttributeName, inRange: NSRange(location: 0, length: textStorage.length), options: nil) { (value, range, _) in
            // Because NSLinkAttributeName supports both NSURL and NSString
            // values. *sigh*
