UIWebView与CRITTERCISM冲突

问题描述:
今天做TAG,UIWebView有时正常。有时无任何显示,并报如下错误:

2013-12-05 14:49:49.028 TAG[2680:c817] void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds. main run loop mode:

问题解决:
网上搜了一圈。原因是UIKit不支持多线程,必须在主线程上修改。具体原因是UIWebView是CRITTERCISM冲突,UIWebView需要在CRITTERCISM前初始化,但是项目里办不到。因为项目用了Segment.io,所以直接off了。

升级后iOS后上传审核Architectures问题

问题描述:今天Geely的iPhone版本要上架,用Application Loader上传报错,如下:

iPhone/iPod Touch: application executable is missing a required architecture. At least one of the following architecture(s) must be present: armv6

问题分析:显然问题出在升级iOS5后的配置问题上。

问题解决:在Target的Build Settings里,找到Architectures,点击"Standard(armv7)",再点"Other...",把原来的内容删掉,在分两行输入"armv6"和"armv7",搞定。

iOS5结构体编译严格

问题描述:今天二罗升级iOS SDK5,发现Monster不能编译了。具体报错信息如下:

variable length array of non-POD element type 'b2Vec2'

问题分析:错误指向的是cocos2d里一个结构体数组定义,如下:

b2Vec2 vertices[vertexCount];

问题解决:把其改成指针形式,如下:

b2Vec2 *vertices = new b2Vec2[vertexCount];

搞定了。

UIButton无法改变大小尺寸

问题描述:Touch Team做Stupid。发现4.0以上按钮尺寸正常,而4.0以下按钮会大一倍。按钮点击等都很正常。

问题分析:UIButton的frame和bonus都不能改变其尺寸。尺寸一直是图片的原始大小。因为4.0以下一般都不是高清屏,所以要对原始图片缩小尺寸。

问题解决:仔细检查代码后,[UIButton setImage: forState:]改为[UIButton setBackgroundImage: forState:],一切ok了。

[UIWindow setRootViewController:]需要4.0以上支持

问题描述:今天Touch Team出Stupid测试版,安装20多台iPhone、iTouch、iPad,都可以安装。但是有一台iPhone(3.1.2)报错,不能安装。注:其他设备基本都在4.0以上。

问题分析:因为是调试安装,所以能看到报错信息,如下:

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:56:02 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=x86_64-apple-darwin --target=arm-apple-darwin".tty /dev/ttys000
target remote-mobile /tmp/.XcodeGDBRemote-16799-38
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
[Switching to process 11779 thread 0x0]
[Switching to process 11779 thread 0x0]
sharedlibrary apply-load-rules all
warning: Unable to read symbols for /Library/MobileSubstrate/MobileSubstrate.dylib (file not found).
warning: Unable to read symbols for /Library/Frameworks/CydiaSubstrate.framework/Libraries/SubstrateLoader.dylib (file not found).
2011-09-27 17:40:14.990 FSStupid[2874:207] MS:Notice: Installing: com.flipscript.stupid [FSStupid] (478.52)
2011-09-27 17:40:15.368 FSStupid[2874:207] MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/Backgrounder.dylib
warning: Unable to read symbols for /Library/MobileSubstrate/DynamicLibraries/Backgrounder.dylib (file not found).
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.1.3/Symbols/usr/lib/libsubstrate.dylib (file not found).
2011-09-27 17:40:17.131 FSStupid[2874:207] MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/Multitasking.dylib
warning: Unable to read symbols for /Library/MobileSubstrate/DynamicLibraries/Multitasking.dylib (file not found).
2011-09-27 17:40:18.007 FSStupid[2874:207] *** -[UIWindow setRootViewController:]: unrecognized selector sent to instance 0x23fe20
2011-09-27 17:40:18.016 FSStupid[2874:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIWindow setRootViewController:]: unrecognized selector sent to instance 0x23fe20'
2011-09-27 17:40:18.034 FSStupid[2874:207] Stack: (
843263261,
825818644,
843267069,
842763033,
842725440,
11685,
843742792,
843741800,
844074496,
844072508,
844071060,
860907492,
843011371,
843009055,
843738120,
843731504,
11481,
11404
)
terminate called after throwing an instance of 'NSException'
(gdb)

 

报错的语句是:

self.window.rootViewController = startViewController;

仔细查看报错信息,发现这句报错:-[UIWindow setRootViewController:]: unrecognized selector sent to instance。查看setRootViewController方法,发现需要4.0以上支持。

解决方案:把出错代码:

self.window.rootViewController = startViewController;

替换为:

if( [[[UIDevice currentDevice] systemVersion] compare:@"4.0" options:NSNumericSearch] == NSOrderedAscending )
[self.window addSubview:self.mainViewController.view];
else self.window.rootViewController = self.mainViewController;

一切ok了。

后台运行App导致无法调试

问题描述:Touch Team做Stupid,调试的时候console报以下问题:
warning: Unable to read symbols for /Library/MobileSubstrate/MobileSubstrate.dylib (file not found). warning: Unable to read symbols for /Library/Frameworks/CydiaSubstrate.framework/Libraries/SubstrateLoader.dylib (file not found). 2011-09-21 12:46:54.465 FSStupid[18953:607] MS:Notice: Installing: com.flipscript.stupid [FSStupid] (550.58) 2011-09-21 12:46:54.489 FSStupid[18953:607] MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/Activator.dylib warning: Unable to read symbols for /Library/MobileSubstrate/DynamicLibraries/Activator.dylib (file not found). 2011-09-21 12:46:54.752 FSStupid[18953:607] MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/QQInput.dylib warning: Unable to read symbols for /Library/MobileSubstrate/DynamicLibraries/QQInput.dylib (file not found). warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.3 (8J3)/Symbols/usr/lib/libsubstrate.dylib (file not found). 2011-09-21 12:46:54.889 FSStupid[18953:607] MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/libstatusbar.dylib warning: Unable to read symbols for /Library/MobileSubstrate/DynamicLibraries/libstatusbar.dylib (file not found).

问题分析:用其他的几台设备测试,一切正常。用有问题的那台机器,然后直接运行,也一切正常。网上查了下,是一些后台运行的程序可能搞鬼(如报错信息中的:QQInput.dylib、libstatusbar.dylib等)

问题解决:用Cydia删除一些dylib,就没有问题了。

iPhone 接近传感器 无响应

问题描述:今天施佳音做FSStupid,一个益智类iPhone游戏,需要做接近传感器检测。在单独的例子里是可以运行,但是把同样代码加入到项目中接近传感器没有响应。

问题分析:仔细查找并论证,发现接近传感器只能在竖向的时候工作。

问题解决:把应用程序切换到竖向显示,一切OK了。