设计开发

Xcode 4.3.2 (4E2002)错误提示Storyboards are unavailable on iOS 4.3 and prior的解决方法

今天尝试用Xcode建立基于5.0+的Storyboards的项目时发现了一个小bug:尝试将项目Deployment Target切换回4.3编译,然后提示Storyboards are unavailable on iOS 4.3 and prior错误,ok,没问题,5.0的新东西,可以理解,切换target回5.0,编译,错误依旧??!!开始以为是某些涉及版本的设置没有成功修改回来,找了半天,没有发现!详细编译log中提示iPhone和iPad对应的两个storyboard文件编译失败。clean, cmd+q退出重开等方法均无效。最后发现需要清除~/Library/Developer/Xcode/DerivedData中对应当前项目的文件夹,然后重新编译就没问题了,这应该是当前版本Xcode的一个bug,不知什么时候能修正……

又是wchar_t的问题,这次是Apple LLVM compiler 3.0的bug!

之前发现过Android上NDK对wchar_t以及相关函数的支持不足问题,后来又发现过iOS上类似的setlocale问题。最近在更新了Xcode 4.2以后,发现之前用的wchar_t相关的东西都不对了,wcslen函数返回的字符串长度不对,而且在gdb中用p查看const wchar_t*变量时,显示的是const void*,貌似就没有wchar_t相关的东西。

这个问题如果切换编译器为之前的LLVM GCC编译器则一切正常,浪费了很多时间排查错误,最后发现更新了最近的Xcode 4.3(4E109)带的Apple LLVM compiler 3.1就没问题了。啊!原来是3.0的BUG。

Eclipse+PDT+Apatana Studio 3的jQuery智能感知设置

以前总用PhpED做一些Web方面的东西,逐渐发现其实IDE还是少而精比较好,毕竟总在各种IDE或者是编辑器直接来回切换是一件很烦人的事,各种界面布局,快捷键之类的差异等会无意义的加大我本来就不怎么高的脑容量的存储鸭梨(比如Debug单步操作Borland的F8流和M$的F10流*_*)。于是开始迁移Web开发功能到常用Eclipse上,总体来说环境设置还算顺利,这次记录下jQuery只能感知相关的问题:

作业环境:

Eclipse Indigo Version: 3.7.1
PDT: 3.0.0
Apatana Studio 3: 3.0.8

jQuery: 1.7.1

Apatana和PDT的安装用Eclipse的Update Site还是比较省心的,PDT直接在Indigo的功能列表里找到,Apatana Studio 3的是:aptana – http://download.aptana.com/studio3/plugin/install,PS:这里好像看到有人提说要先装Apatana再装PDT,不过我觉得顺序应该不会影响功能。

Apatana 2的开启jQuery支持方式和3有所不同,3.0.5以后和以前也略有不同,2是用手动添加vsdoc等文件的方式,不太方便,3.0.5以后基本可以说是完整整合了这部分功能,还是比较方便的,具体操作:
Continue reading…

VS2010代码编辑窗口第一次编辑操作导致报错的问题

用VS2010打开一个C/C++项目,随便选个源代码文件,编辑,报错提示遇到异常,可能由于某Add-in导致等blah blah blah…,确定无视提示后继续编辑,写完一个函数的proto后IDE卡死,稍候直接大红叉异常,只能强制结束进程。

开始按照提示信息,怀疑是VM Ware的Virtual Debugger插件导致,于是花了一会时间把插件以正常添加/删除方式卸载掉,重启IDE,错误依旧,发现被M$的提示信息误导了!

用VS的命令行方式挂log参数启动,devenv /log,触发错误提示后查看ActivityLog.xml日志,xsl顺利的解析出了2条大红色的错误信息:

System.InvalidCastException: Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘Microsoft.VisualStudio.TextManager.Interop.IVsTextReplaceEvents’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{CF9928D9-65AE-4319-A446-94ED5C45ECDE}’ failed due to the following error: 不支持此接口 (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, Boolean& pfNeedsRelease) at Microsoft.VisualStudio.TextManager.Interop.IVsTextReplaceEvents.OnReplace(ChangeInput[] pCI) at Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.OnTextBufferChangedHighPriority(Object sender, TextContentChangedEventArgs e) at Microsoft.VisualStudio.Text.Utilities.GuardedOperations.RaiseEvent[TArgs](Object sender, EventHandler`1 eventHandlers, TArgs args)

 

System.InvalidCastException: Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘Microsoft.VisualStudio.Editor.Implementation.IVsTextStreamEvents_Private’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{96FC7D44-BCDD-4F00-AE4D-07E26B2C0E52}’ failed due to the following error: 不支持此接口 (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, Boolean& pfNeedsRelease) at Microsoft.VisualStudio.Editor.Implementation.IVsTextStreamEvents_Private.OnChangeStreamText(Int32 iPos, Int32 iOldLen, Int32 iNewLen, Int32 fLast) at Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.OnTextBufferChanged(Object sender, TextContentChangedEventArgs e) at Microsoft.VisualStudio.Text.Utilities.GuardedOperations.RaiseEvent[TArgs](Object sender, EventHandler`1 eventHandlers, TArgs args)

有了具体错误信息,发现是某个VS编辑COM控件的注册信息丢失导致,最后还算轻松的找到了解决方法:

Continue reading…

Xcode4中code sign identity选项值不出下拉选择框的解决方法

问题出现时的系统、软件版本:

Mac OS X 10.6.8 (10K549)

Xcode Version 4.0.2 Build 4A2002a

出问题时的现象:

 

 

如上两图所示:选签证的选项不显示下拉选择框反而是个普通的文本编辑框,上面的SDK架构什么的也是一样,发现这个问题其实是由于一个provision profile过期,要更换一下而已…
Continue reading…

MotoDroid的glTexSubImage2D作用贴图尺寸问题

之前用MotoDroid机器的时候曾经发现过一个比较恶心的事,就是glGenTextures函数生成的贴图ID是乱数的问题,后来发现GL官方也说不保证此函数返回值是连续正整数,也就罢了。这次又发现MotoDroid上的glTexSubImage2D函数问题,就是在获取gl信息中的最大贴图尺寸时,ME525和Milestone2都返回2048×2048(其它机型未测),但在贴图尺寸为2048×2048的时候调用glTexSubImage2Dj局部更新贴图时,会出现错误覆盖贴图已有内容的问题,而将贴图尺寸降为1024×1024后就不会出现这种问题了。

Xcode4.1 iOS4 SDK项目升级到Xcode4.2 iOS5 SDK后模拟器运行直接异常问题

一个在Xcode4.1+iOS4 SDK环境下能够正常编译、运行、模拟器、真机调试运行的项目,在升级到Xcode4.2+iOS5 SDK后不能在模拟器上运行,启动程序后直接抛异常(好像是个EXC_BAD_ACCESS之类的内存访问违规,但在真机调试时并没有问题,且真机也是iOS5系统!),而此时的中断位置甚至尚未到达入口main,类似下图的stack trace:

Continue reading…

终于完成了残念已久的贴片47耳放,留个纪念…

2604贴片47耳放

2604贴片47耳放

只是想学习一下贴片焊接,但又想弄点有用的东西出来,于是淘宝了一套贴片2604版的47。

第一次焊贴片,掌握的很不好,样子看着很糟糕,但总算是都正确的装上了。

残念的所在是这个耳放的电源部分,看别人说用2个9v电池做双电源供电就可以,也许是别人指的情况并不能完美适用这个opamp,反正我是试了半天就没正常工作过,也有可能是电池本身的问题。后来因为比较忙就搁置了,这两天不知为何又想起这事来了,这次索性直接淘宝买了个成品+-15V供电板,一通拆装过后,47终于正常工作了。顺带一提,工作时两个运放的温度都非常高,摸着烫手,不知是否正常,有点担心寿命问题。

怎么说呢,咱这套设备也不是多高端,最终的感觉就是接上耳放的话,不仔细听也听不出什么太大的区别。- -!

原本以为能用电池搞定电源的话再做个壳就能便携用了,结果电池计划失败,也就先这样裸奔玩吧,也挺好,呵呵。

Copy .strings file Error Validation failed: The data couldn’t be read because it has been corrupted.

XCode中iOS项目字符串资源InfoPlist.strings添加多语言支持后,修改中文资源中字符串常量为汉字后编译出现标题中的错误,解决方法为修改各语言资源中的文本格式,使其结构一致,如出错时的中英文资源是这样的:

{

CFBundleDisplayName = “\U71af\U72a2+”;

}

{

CFBundleDisplayName = Game+;

}

修改英文资源为这样即可解决:

{

CFBundleDisplayName = “Game+”;

}

wait_fences: failed to receive reply: 10004003和UIAlertView之间的小故事

试验iOS上的GLES 2.0和GLSL的时候,想完美点加个初始化时的2.0支持判断,修改了一下XCode4默认生成的框架,在awakeFromNib时直接判断并用UIAlertView提示,然后delegate中退出程序。结果一运行console提示标题里那段话,应该是个警告,但看着别扭,完全删掉UIAlertView提示代码就没有问题。

看了一下网上这个提示问的不少,出现情况和解决方法也是五花八门,提供一下我这个的解决方法吧,供网友们参考。

这个问题时由于UIAlertView在弹出时主View还没有加载并显示导致的,可能和动画效果有关,没去验证,总之,改变一下判断逻辑,把弹框提示部分的触发代码挪到viewWillAppear里就没问题了!