[TIMOB-19866] iOS: PreviewContext with no previews crashes or freezes app
| GitHub Issue | n/a | 
|---|---|
| Type | Improvement | 
| Priority | None | 
| Status | Closed | 
| Resolution | Fixed | 
| Resolution Date | 2015-11-04T22:22:37.000+0000 | 
| Affected Version/s | Release 5.1.0 | 
| Fix Version/s | n/a | 
| Components | iOS | 
| Labels | n/a | 
| Reporter | Fokke Zandbergen | 
| Assignee | Hans Knöchel | 
| Created | 2015-11-04T13:50:44.000+0000 | 
| Updated | 2017-03-21T18:38:00.000+0000 | 
Description
	When you have no 
preview property set for the preview context then the app will crash or - what I saw in the 3D touch app - it will freeze showing the blur effect.
Of course the developer should know it needs a preview, but now we have peek/pop events its easy to make the assumption you could set the preview from the peek-event. So it would be a better dev experience if we provide better feedback then this crash.
var win = Ti.UI.createWindow({
	backgroundColor: "white"
});
var button = Ti.UI.createButton({
	previewContext: Ti.UI.iOS.createPreviewContext({
		// preview: Ti.UI.createView({backgroundColor: 'green'})
	}),
	title: "Open Window!",
	backgroundColor: "#A6171C",
	width: 200,
	height: 50,
	tintColor: "#fff"
});
win.add(button);
win.open();
[ERROR] The application has crashed with an uncaught exception 'NSInvalidArgumentException'.
[ERROR] Reason:
[ERROR] *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
[ERROR] Stack trace:
[ERROR]
[ERROR] 0   CoreFoundation                      0x0000000183a58f48 <redacted> + 124
[ERROR] 1   libobjc.A.dylib                     0x0000000198f03f80 objc_exception_throw + 56
[ERROR] 2   CoreFoundation                      0x00000001839477c8 <redacted> + 324
[ERROR] 3   CoreFoundation                      0x0000000183947660 <redacted> + 64
[ERROR] 4   theme                               0x000000010008c7dc theme + 460764
[ERROR] 5   UIKit                               0x0000000189373d7c <redacted> + 248
[ERROR] 6   UIKit                               0x0000000189628d4c <redacted> + 224
[ERROR] 7   UIKit                               0x0000000189629848 <redacted> + 136
[ERROR] 8   UIKit                               0x000000018962a8c0 <redacted> + 100
[ERROR] 9   UIKit                               0x0000000189567330 <redacted> + 164
[ERROR] 10  UIKit                               0x0000000189190b5c <redacted> + 172
[ERROR] 11  UIKit                               0x000000018901e85c <redacted> + 784
[ERROR] 12  UIKit                               0x000000018956870c <redacted> + 72
[ERROR] 13  UIKit                               0x0000000188fdd8b8 <redacted> + 372
[ERROR] 14  UIKit                               0x0000000188fda63c <redacted> + 2404
[ERROR] 15  UIKit                               0x000000018901c6cc <redacted> + 1132
[ERROR] 16  UIKit                               0x000000018901bcc8 <redacted> + 764
[ERROR] 17  UIKit                               0x0000000188fec4a4 <redacted> + 248
[ERROR] 18  UIKit                               0x0000000188fea76c <redacted> + 5528
[ERROR] 19  CoreFoundation                      0x0000000183a10544 <redacted> + 24
[ERROR] 20  CoreFoundation                      0x0000000183a0ffd8 <redacted> + 540
[ERROR] 21  CoreFoundation                      0x0000000183a0dcd8 <redacted> + 724
[ERROR] 22  CoreFoundation                      0x000000018393cca0 CFRunLoopRunSpecific + 384
[ERROR] 23  GraphicsServices                    0x000000018eec0088 GSEventRunModal + 180
[ERROR] 24  UIKit                               0x0000000189054ffc UIApplicationMain + 204
[ERROR] 25  theme                               0x0000000100020de8 theme + 19944
[ERROR] 26  libdyld.dylib                       0x00000001997468b8 <redacted> + 4
[ERROR] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'
[ERROR] *** First throw call stack:
[ERROR] (0x183a58f48 0x198f03f80 0x1839477c8 0x183947660 0x10008c7dc 0x189373d7c 0x189628d4c 0x189629848 0x18962a8c0 0x189567330 0x189190b5c 0x18901e85c 0x18956870c 0x188fdd8b8 0x188fda63c 0x18901c6cc 0x18901bcc8 0x188fec4a4 0x188fea76c 0x183a10544 0x183a0ffd8 0x183a0dcd8 0x18393cca0 0x18eec0088 0x189054ffc 0x100020de8 0x1997468b8)
PR: https://github.com/appcelerator/titanium_mobile/pull/7403
FT approved , merging. Thank Hans.
Closing ticket as fixed.