• 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,问题解决。

     
  • Open source CoverFlow

    使用OpenGL ES的开源Cover Flow,据说有好几个上架程序中都有使用,见http://www.chaosinmotion.com/flowcover.m

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

    以前发过一篇文章介绍怎样修改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解压其下。

     
  • 访问外部网页

    实际上有两种方法,第一种是:

    1
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com"]];



    这种方法将会退出当前程序,用Safari打开url。我有好几个朋友都问到这个问题,实际上非常简单,可以使用UIWebView在当前程序中打开网页(假定你的UIWebView实例为webView):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         NSString *urlAddress = @"http://localhost";
           
        //Create a URL object.
        NSURL *url = [NSURL URLWithString:urlAddress];
           
        //URL Requst Object
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
           
        //Load the request in the UIWebView.
        [webView loadRequest:requestObj];
     
  • 都是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上通过http传递JSON数据




    本教程介绍了在iPhone程序中怎样访问JSON web service的详细步骤。


    读文章 »

     
  • IAP(程序内购买): 完全攻略

    第一印象觉得In-App Purchase(简称IAP)非常简单。Apple提供的大量文档应该让开发者很快熟悉地熟悉。那么,为什么在你的应用中集成IAP特性就如此令人生厌呢?


    这是因为在开发过程中不可避免会出现一些错误。而但这些错误发生的时候,你就抓瞎了。虽然Apple提供了有关IAP的大量文档,但他们并未提及集成IAP的详细步骤。而且对StoreKit集成过程中出现的问题也没有一个核对清单。另外对于为什么诸如产品ID非法之类的问题也没有提供NSError之类的对象来告诉你原因。


    在试用了各种可能的解决方案后,你只能身心疲惫,彷徨无助。


    为了提高你的效率和减少你的痛苦,我觉定利用此文来介绍一下实现IAP的详细步骤。本文很详细,有点长。甚至可能太长了,但不像Apple的文档,它提供了为实现IAP的每一个步骤。


    废话少说,我们直入主题吧。


    读文章 »

     
  • 以密码方式显示UITextField文本

    很简单,如下:

    1
    textField.secureTextEntry = YES;