objective-c parsing ios assertion

objective c - ¿Alguna idea de cómo evitar esta afirmación en DDTokenCache y qué significa?



objective-c parsing (2)

Puede preprocesar el texto reemplazando los enlaces que crean problemas.

Estoy usando NSDataDetector con NSTextCheckingTypeLink para buscar una cadena de enlaces (por ejemplo, https://stackoverflow.com/questions ) dentro de ella. En general, funciona bien, pero cuando la cadena contiene ciertos enlaces muy largos (más de 200 caracteres) seguidos de un espacio y otra palabra, obtengo esta afirmación:

> DDRequire failed: the following assertion will only be logged once > > assertion on > /SourceCache/MobileDataDetectorsCore/MobileDataDetectorsCore-154/Sources/PushDown/DDTokenCache.c:310 > "delta >= 0" failed :Bad shift in > DDTokenCacheMoveStreamOffset, aborting

Este es el tipo de texto que causa esto:

> blog.somethingorother.com/2011/storynameetcmorestuff/utm_source/eedburnerutmmediumfeedutmcampaign/FeedanutmcontentGooglFeedfetcherutmcampaign/FeedanutmcontentGooglFeedfetcher/eedburnerutm_mediumfeedutmcampaign/FeedanutmcontentGooglFeedfetcherutmcampaign HEY

¿Alguien sabe qué hay detrás de esto o tiene alguna otra idea sobre esto?


Resuelto: el problema es con los detectores de datos UITextView.

Por favor, vaya a UIDataDetectorTypes:

typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) { UIDataDetectorTypePhoneNumber = 1 << 0, // Phone number detection UIDataDetectorTypeLink = 1 << 1, // URL detection #if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED UIDataDetectorTypeAddress = 1 << 2, // Street address detection UIDataDetectorTypeCalendarEvent = 1 << 3, // Event detection #endif UIDataDetectorTypeNone = 0, // No detection at all UIDataDetectorTypeAll = NSUIntegerMax // All types };

Si configura UIDataDetectorTypeAll o UIDataDetectorTypeAddress o UIDataDetectorTypeCalendarEvent, iOS crea problemas en iOS5.0 y superiores.

textview.dataDetectorTypes=UIDataDetectorTypeAll;

O

textview.dataDetectorTypes=UIDataDetectorTypeAddress | UIDataDetectorTypeCalendarEvent;

Entonces a veces crea un problema en iOS5.0 y superior.

Entonces necesita configurar detectores de datos explícitamente:

textview.dataDetectorTypes = UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber;