Poinユーザさんからの報告で発覚。
യ⁺‧♡””( ॣᵅั◡ᵅั ॣ)
かわいい顔文字なのですが、UITextViewにsetTextすると落ちます。
プロフィール画面を編集できないとのことなので、そのユーザさんの使っている文章などを調べつつ検証開始。Poinが落ちるところまでは順調に確認できました。よし、治ったも同然!!と思ったら甘かった。
Xcodeから「Single View App」を作成して、UITextViewを追加して、その文字を表示すると、、、XCodeごと落ちる!!
僕の環境(OSX 10.10.2 + Xcode 6.1.1 + iPhone 6 simulator)と、デザイナくんの環境で確認済みです。どなたか追試していただけませんか?
類似の話がすでにあった
http://qiita.com/edo_m18/items/54b6d6f5f562df55ac9b
参考コード
@interface ViewController ()
@property(nonatomic)UITextView *textView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_textView = [UITextView.alloc initWithFrame:self.view.bounds];
[self.view addSubview:_textView];
self.textView.text = @"aaa";
self.textView.text = @"യ⁺‧♡””( ॣᵅั◡ᵅั ॣ)";
// Do any additional setup after loading the view, typically from a nib.
}
@end
Stacktrace
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.CoreText 0x00007fff8cba4187 OpenTypeReorderingOutput::getStringIndex(long) const + 41
1 com.apple.CoreText 0x00007fff8cba558c OpenTypeShapingEngine::ApplyScriptShaping(unsigned int*) + 326
2 com.apple.CoreText 0x00007fff8cb5a2d9 TOpenTypeMorph::ApplyShapingEngine(OTL::GSUB&, OTL::GlyphLookups&, unsigned int*, CFRange, bool&) + 691
3 com.apple.CoreText 0x00007fff8cb5adf8 TOpenTypeMorph::ShapeGlyphs(bool&) + 346
4 com.apple.CoreText 0x00007fff8cb0868b TShapingEngine::ShapeGlyphs(TLine&, TCharStream const*) + 295
5 com.apple.CoreText 0x00007fff8cad6a26 TTypesetter::TTypesetter(__CFArray const*, __CFString const*, void const* (*)(__CTRun const*, __CFString const*, void*), void*) + 202
6 com.apple.CoreText 0x00007fff8cad6822 CTTypesetterCreateWithRunArray + 93
7 com.apple.UIFoundation 0x00007fff912395dd -[NSATSGlyphStorage createCTTypesetter] + 1536
8 com.apple.UIFoundation 0x00007fff91232f0c -[NSATSTypesetter _ctTypesetter] + 324
9 com.apple.UIFoundation 0x00007fff9123d8b5 -[NSATSLineFragment layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:] + 89
10 com.apple.UIFoundation 0x00007fff91233d43 -[NSATSTypesetter _layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:] + 2901
11 com.apple.UIFoundation 0x00007fff91235a08 -[NSATSTypesetter layoutParagraphAtPoint:] + 156
12 com.apple.UIFoundation 0x00007fff91186356 -[NSTypesetter _layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:maxCharacterIndex:nextGlyphIndex:nextCharacterIndex:] + 4713
13 com.apple.UIFoundation 0x00007fff91187ae5 -[NSTypesetter layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments:] + 246
14 com.apple.UIFoundation 0x00007fff91236743 -[NSATSTypesetter layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments:] + 967
15 com.apple.UIFoundation 0x00007fff911ffe76 -[NSLayoutManager(NSPrivate) _fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:] + 1334
16 com.apple.UIFoundation 0x00007fff9120970c _NSFastFillAllLayoutHolesForGlyphRange + 1493
17 com.apple.AppKit 0x00007fff8b9b52b9 -[NSTextView(NSPrivate) _ensureLayoutCompleteForVisibleRectWithExtensionFactor:minimumExtensionDistance:repetitions:] + 640
18 com.apple.AppKit 0x00007fff8b40723a -[NSTextView setNeedsDisplayInRect:avoidAdditionalLayout:] + 2242
19 com.apple.dt.DVTKit 0x0000000108cb003c -[DVTCompletingTextView setNeedsDisplayInRect:avoidAdditionalLayout:] + 91
20 com.apple.UIFoundation 0x00007fff911558c1 -[NSLayoutManager _primitiveInvalidateDisplayForGlyphRange:] + 5320
21 com.apple.UIFoundation 0x00007fff91156219 -[NSLayoutManager invalidateDisplayForCharacterRange:] + 441
22 com.apple.dt.DVTKit 0x0000000108cb29b0 -[DVTLayoutManager invalidateDisplayForCharacterRange:] + 874
23 com.apple.dt.DVTKit 0x0000000108d02857 -[DVTTextAnnotation invalidateDisplayAndLayoutIfNeeded:] + 414
24 com.apple.dt.DVTKit 0x0000000108d21525 -[DVTMessageBubbleAnnotation invalidateDisplayAndLayoutIfNeeded:] + 84
25 com.apple.dt.DVTKit 0x0000000108ed08a8 -[DVTTextAnnotation addLayoutManager:] + 198
26 com.apple.dt.DVTKit 0x0000000108e91202 -[DVTLayoutManager addAnnotation:] + 549
27 com.apple.dt.DVTKit 0x0000000108e92130 -[DVTLayoutManager didInsertAnnotations:] + 243
28 com.apple.dt.DVTKit 0x0000000108e11398 __70-[DVTAnnotationManager _installObservationBlockForAnnotationProvider:]_block_invoke + 732
29 com.apple.dt.DVTFoundation 0x000000010887c1ab __73-[DVTObservingBlockToken observeValueForKeyPath:ofObject:change:context:]_block_invoke183 + 83
30 com.apple.dt.DVTFoundation 0x00000001087f7d78 DVTInvokeWithStrongOwnership + 75
31 com.apple.dt.DVTFoundation 0x00000001086ab5fc -[DVTObservingBlockToken observeValueForKeyPath:ofObject:change:context:] + 328
32 com.apple.Foundation 0x00007fff84e5ea03 NSKeyValueNotifyObserver + 382
33 com.apple.Foundation 0x00007fff84e5dbd8 NSKeyValueDidChange + 463
34 com.apple.Foundation 0x00007fff84ef3a0a -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:withSetMutation:usingObjects:] + 118
35 com.apple.Foundation 0x00007fff84f6c96b -[NSKeyValueNotifyingMutableSet addObject:] + 161
36 com.apple.dt.dbg.DebuggerUI 0x00000001130452ec -[DBGInstructionPointerAnnotationProvider _createAnnotationForInstructionPointerLocation:] + 417
37 com.apple.dt.dbg.DebuggerUI 0x0000000113032b18 -[DBGInstructionPointerAnnotationProvider _handleInstructionPointerLocationChanged:] + 780
38 com.apple.dt.DVTFoundation 0x000000010887c1ab __73-[DVTObservingBlockToken observeValueForKeyPath:ofObject:change:context:]_block_invoke183 + 83
39 com.apple.dt.DVTFoundation 0x00000001087f7d78 DVTInvokeWithStrongOwnership + 75
40 com.apple.dt.DVTFoundation 0x00000001086ab5fc -[DVTObservingBlockToken observeValueForKeyPath:ofObject:change:context:] + 328
41 com.apple.Foundation 0x00007fff84ed0f43 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:] + 417
42 com.apple.Foundation 0x00007fff84ed0f43 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:] + 417
43 com.apple.Foundation 0x00007fff84ed0f43 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:] + 417
44 com.apple.Foundation 0x00007fff84e5ea03 NSKeyValueNotifyObserver + 382
45 com.apple.Foundation 0x00007fff84e5dbd8 NSKeyValueDidChange + 463
46 com.apple.Foundation 0x00007fff84e6273d -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 118
47 com.apple.dt.dbg.DebuggerUI 0x0000000113047a60 -[DBGDebugSessionController _navigateEditorToStackFramesSourceFile:] + 385
48 com.apple.dt.DVTFoundation 0x000000010887cb37 -[NSObject(DVTObservingConvenience) _dvt_newObserverForKeyPath:options:owner:withHandlerBlock:] + 533
49 com.apple.dt.DVTFoundation 0x00000001086d6076 -[NSObject(DVTObservingConvenience) dvt_newObserverForKeyPath:options:withHandlerBlock:] + 60
50 com.apple.dt.dbg.DebuggerUI 0x0000000113037233 -[DBGDebugSessionController _navigateEditorToCurrentStackFrame] + 255
51 com.apple.dt.DVTFoundation 0x000000010887c1ab __73-[DVTObservingBlockToken observeValueForKeyPath:ofObject:change:context:]_block_invoke183 + 83
52 com.apple.dt.DVTFoundation 0x00000001087f7d78 DVTInvokeWithStrongOwnership + 75
53 com.apple.dt.DVTFoundation 0x00000001086ab5fc -[DVTObservingBlockToken observeValueForKeyPath:ofObject:change:context:] + 328
54 com.apple.Foundation 0x00007fff84ed0f43 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:] + 417
55 com.apple.Foundation 0x00007fff84e5ea03 NSKeyValueNotifyObserver + 382
56 com.apple.Foundation 0x00007fff84e5dbd8 NSKeyValueDidChange + 463
57 com.apple.Foundation 0x00007fff84e6273d -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 118
58 com.apple.dt.dbg.DebuggerFoundation 0x000000010fdc82d4 -[DBGProcess setInitialCurrentStackFrame] + 559
59 com.apple.dt.dbg.DebuggerLLDB 0x000000011027351b __59-[DBGLLDBSession _refreshThreadListAndUpdateCurrentThread:]_block_invoke883 + 92
60 com.apple.dt.DVTFoundation 0x00000001088a1646 __DVTAsyncPerformBlock_block_invoke + 39
61 com.apple.CoreFoundation 0x00007fff924a156c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
62 com.apple.CoreFoundation 0x00007fff92493675 __CFRunLoopDoBlocks + 341
63 com.apple.CoreFoundation 0x00007fff92492e2e __CFRunLoopRun + 910
64 com.apple.CoreFoundation 0x00007fff92492858 CFRunLoopRunSpecific + 296
65 com.apple.HIToolbox 0x00007fff86e73bcf RunCurrentEventLoopInMode + 235
66 com.apple.HIToolbox 0x00007fff86e7394a ReceiveNextEventCommon + 431
67 com.apple.HIToolbox 0x00007fff86e7378b _BlockUntilNextEventMatchingListInModeWithFilter + 71
68 com.apple.AppKit 0x00007fff8b305f01 _DPSNextEvent + 964
69 com.apple.AppKit 0x00007fff8b3056b0 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 194
70 com.apple.dt.DVTKit 0x0000000108dd06fd -[DVTApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 237
71 com.apple.AppKit 0x00007fff8b2f94e3 -[NSApplication run] + 594
72 com.apple.AppKit 0x00007fff8b2e4974 NSApplicationMain + 1832
73 libdyld.dylib 0x00007fff8b2935c9 start + 1