• Xcode不支持iPhoe OS 3.2.1的解决方法

    最近iPad升级到iPhone 3.2.1,今天准备进行真机调试,猛然发现Xcode下出现下列错误:


    The version of iPhone OS on “xxxx” does not match any of the versions of iPhone OS supported for development with this copy of Xcode. Please restore the device to a version of the OS listed below. If necessary, the latest version of Xcode is available here.


    Google 了一下,发现是3.2.1的目录在DeviceSupport下不存在。解决办法是用最接近的OS版本使用ln命令进行链接。不过在操作过程中有两个问题:


    1. 不知什么原因,ln -s 命令后总是为文件而不是目录
    2. 不知OS 3.2的build number


    于是,采用最笨但最为有效的方法:


    在/Developer/Platforms/iPhoneOS.platform/DeviceSupport目录下创建3.2.1目录,然后,将3.2下所有文件及目录复制到3.2.1下,重新启动Xcode,问题解决。

     
  • 修改公司名称的“新”方法

    以前发过一篇文章介绍怎样修改Xcode中的公司名称,见怎样替换Xcode中__MyCompanyName__

    现在(不知是从Xcode哪个版本开始,我是3.2.3)可以有更简单的方法修改公司名称,而且还可以在基于项目修改。方法如下:

    1. 右击项目名称,选择“Get Info…”
    2. 在“General Settings”一栏中可以看到“Organization Name”,修改它,那么本项目中的公司名称就修改了。

     
  • 怎样离线使用iPhone SDK文档

    我是用Dell机安装的雪豹系统,由于没有无线网卡的支持,所以上网很不方便。在使用Xcode进行iPhone编程时,有时需要参考iPhone SDK的文档,不过每次Control+Click后,Xcode都会试图连接Internet,进行在线读取。有什么方法能够把资料下载到硬盘上进行离线阅读吗?


    答案是肯定的。首先去Xcode的Preference中的Documentation Sets下,选择所需的docset,这里是iPhone 4.0 Reference Library,右击选择“Get Info…”,找到Feed URL:


    http://developer.apple.com/rss/com.apple.adc.documentation.AppleiPhone4_0.atom


    用浏览器打开,下面列出了许多版本,在Windows下你就可以使用迅雷下载了。


    下载后,拷贝到Mac的/Developer/Documentations/Docset目录下,使用终端命令:

    sudo xar -xf 下载的文件名.xar



    将其解压,然后使用:

    sudo chown -R -P devdocs 解压后的文件名.docset



    将文档的所有者改为devdocs。打开Xcode就可以离线浏览了。

     
  • Navigation-Based应用程序iPad模板

    准备为iPad写一个Navigation-Based程序,却发现XCode 3.2中根本没有iPad的Navigation-Based程序的模板。Apple推荐在iPad下使用Split-View程序,但我并不想这样做,原因是我的iPad程序以后可能要放到iPhone中去,所以我需要一个Universal版。如果我在iPad下使用Split-View,那么这两个版本相差太大,所以我觉得都使用Navigation-Based程序。


    试了半天想修改iPhone的Navigation-Based程序的模板到iPad下,却没有成功,在网上搜了一下,终于找到一个别人做好的。下面是下载地址。可以使用如下命令将其加到XCode的模板中:

    mkdir -p “$HOME/Library/Application Support/Developer/Shared/XCode/Project Templates/My Templates”

    cd “$HOME/Library/Application Support/Developer/Shared/XCode/Project Templates/My Templates”

    git clone git://github.com/benellingson/Universal-Navigation-based-Application.git

    rm -rf “Universal-Navigation-based-Application/.git”



    或者下载zip文件,在创建了目录后,将zip解压其下。

     
  • 都是Backgrounder惹的祸 – 解决“越狱”真机调试的问题

    我的iPhone越狱后,在用Xcode进行调试时出现以下错误信息:


    warning: Unable to read symbols for “/Library/MobileSubstrate/DynamicLibraryies/libstatusbar.dylib” (file not found).

    Program received singal: “SIGUSR1″.


    上网查了一下原来是Backgrounder在作怪,最简单的解决方法就是在Backgournder的overrides设定中,禁止要调试的程序以background模式运行即可。


    想要知道具体原因,请参见:Backgrounder vs. Build and Run

     
  • iPhone项目使用静态库的最佳方法

    由于Apple禁止在iPhone中使用外部框架或动态链接库,所以要重用代码(第三方库或自己的代码)只能选择如下方法:

    1. 直接将代码加入项目。这种方法有点笨。例如,你的一段代码被五个项目共享,如果你发现一个小bug,那么你需要更改五个地方。够麻烦吧?
    2. 使用静态库。这是我经常使用的方法。但Xcode并未为iPhone提供静态库的模板。有两种解决方法:

    读文章 »

     
  • iPhone静态库项目模板

    Xcode并未提供iPhone静态库的模板,所以我每次都使用Mac Application的静态库模板,但每次建立项目后,都要针对iPhone进行一些修改,比较麻烦。我在网上找到一个可以直接被iPhone项目使用的静态库模板:

    http://github.com/keremk/iphone-static-library-project-template

     
  • Xcode之宏

    注:宏的使用可以节省代码重复输入工作,还可以为调试带来各种好处。本文列出了几个非常简单实用的宏。
    读文章 »

     
  • 怎样替换Xcode中__MyCompanyName__

    我们知道,Xcode在每个.h和.m文件头都会加上一些发行信息,如姓名,创建日期,公司名等。但公司名是用__MyCompanyName__代表,每个文件都要手工修改十分麻烦。此信息的模板存在/Library/Application Support/Apple/Developer Tools/File Templates下,格式如下:

    1
    2
    3
    4
    5
    6
    7
    8
    /*
     *  «FILENAME»
     *  «PROJECTNAME»
     *
     *  Created by «FULLUSERNAME» on «DATE».
     *  Copyright «YEAR» «ORGANIZATIONNAME». All rights reserved.
     *
     */

    我们当然可以修改此文件。但每次Xcode升级后,此信息就会丢失。我在一本有关Xcode的书中找到一个方法:

    1
    defaults write com.apple.xcode PBXCustomTemplateMacroDefinitions '{ ORGANIZATIONNAME = "Joan Smith"; }'

    另一种方法是通过双击~/Library/Preferences下com.apple.Xcode.plist来修改。

     
  • Xcode提示与技巧1-10

    我的世界被各种各样的便签条,不管是电子的还是纸的,包围着。我总是想方设法记住各种各样的Xcode的便捷键以及各种提示与技巧。编程时,我总是尽量少用鼠标,如果没有这些提示,我就会无所适从了。而这里是记录这些提示与技巧最好的地方了。

    读文章 »