• 开始学习iPhone编程之五 – Objective C / Cocoa / iPhone的内存管理

    随着iPhone SDK的发布,iPhone/iPod Touch被售出数以百万计(作者注:这是一篇以前的文章,现在iPhone/iPod Touch的销售数量远大于此数)而且App Store广受欢迎,越来越多的开发者开始进行iPhone及Cocoa Touch的开发。SDK设计精良而且很容易入门,最大的障碍来自于Apple选择作为OSX和iPhone开发的独特语言(其前身为NextStep):Object C。初看时,Object C非常丑陋而且与人们常用的基于C的语法(C, C++, ActionScript, JavaScript, Java, C#, GLSL等)并不相似。但一旦对其有所研究后,你会喜欢上它并明白其语法为何如此。

     

    大部分人初次接触Objective C/Cocoa开发时的最大困难是内存管理 – 当你最终理解了它是多么简单(尽管这可能需要通过几个项目)时,你就会明白这一切实际上是多么漂亮。实际上,我发现其非常实用,所以编写了一个C++类来实现类似功能(http://code.google.com/p/ofxmsaof/wiki/ofxObjCPointer).

     

    读文章 »

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

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

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

    读文章 »

     
  • 不需要越狱或Push运行iPhone后台程序

    (译者注:虽然不提倡本文的方法,但还是向此文作者的创造性致敬!)

     

    有一种试验性的方法实现iPhone上运行后台程序/守护进程。到目前为止,iPhone SDK 并不允许在iPhone OS上(其本身是基于 Darwin Unix的)开发“真正的” Unix方式的后台进程(守护进程)。

     

    本方法涉及了一些高级编程课题,例如 shellcode,因此要求一些基本的汇编经验,Unix系统调用以及最好具有一些ARM 经验。

     

    读文章 »

     
  • 跨平台代码分享之四 – 开源跨平台C++库介绍

    做项目时发现一个开源C++库,称为POCO(POrtable COmponents – 可移植元件),非常方便好用。

     

    特性:

     

    * 线程,程序同步及多线程编程高级抽象
    * 流及文件系统访问
    * 共享库将类加载
    * 功能强大的日志和错误报告
    * 安全及加密
    * 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3, 等)
    * XML解析 (SAX2 和 DOM) 及生成
    * 配置文件及选项处理
    * SQL数据库访问(ODBC, MySQL, SQLite)

     

    可以运行的平台包括:

     

    * Windows
    * Mac OS X
    * iPhone OS
    * (embedded) Linux
    * HP-UX
    * Tru64
    * Solaris
    * QNX

     
  • OpenGL ES粒子发生器

    译者注:此代码虽然有这样那样的问题,但仍然值得参考。

    IMG_0038

    我在360 iDev会议中汇总了粒子发生器的代码。由于我又要开始进行有收入的工作所以我必须将之处之高阁了,但我准备在这里分享给有兴趣者。

    IMG_0020

    首先,我要说我并不是一个OpenGL的专家,我撰写此文能够帮助我更好地学习OpenGL 和粒子系统,所以可以肯定还有很多地方需要改进。

    IMG_0038

    其次,此代码还有许多bug,并不适用于最终产品。最重要的一个bug是试图释放粒子时造成的死循环。粒子内存没有被释放,它不断被重用。有两个链接表,一个用于保存可见的粒子,另一个保存不再可见的粒子。当一个粒子生存期到达时,它将被从一个列表移动到另一个。当需要一个新的粒子时,就从列表中提取一个。此方法可以避免不断的内存分配和释放的开销 。但是,当粒子发射后,我需要一个选项来释放内存,现在它会造成死循环。

    IMG_0005

    第三,示例程序将所有的发生器放入一个数组中。当你轻触屏幕时,当前发生器会停止发射,下一个发生器开始启动。当最后一个发生器结束时,第一个发生器循环启动。此时,会遇到pthread锁竞争问题,两个线程会等待另一个线程,引起程序锁住。由于我并非手工建立线程,所以跟踪此问题可能有相当的难度。

    IMG_0004

    可在Google Code project 下载。如果你不想使用subversion,你也可以直接下载zip文件Particles_03_06_2008.

     
  • iPhone 3.0新特性系列教程之五 – 电池监视

     

    读文章 »

     
  • OpenGL ES 03 – 变换

    今天我们将在屏幕上同时显示三角形和正方形,并且移动它们。移动一个物体,我们称之为转移.

     

    读文章 »

     
  • 开始学习iPhone编程之四 – 所有iPhone apps都需要做的七件事

    想要开发iPod或iPhone程序?这里有一个列表,列出了要获得成功需要做到的七件事。

     

    如果你有一台iPhone或者iPod,那么你可能下载过一些程序。如果你下载了不止一个程序,那么你很快就会发现一些程序比另一些更好。

     

    开发者在编写程序时有许多选择;程序不但需要有一个很好的设想,而且需要以一种iPhone用户熟悉的方式展现出来。如果用户需要花上超过一分钟的时间来摸索这样使用你的程序,那么导致的结果可能是他们再也不会使用你的程序并且会给出一个低分。

     

    这两种结果都是不好的结果,特别是你希望在App Store中获得成功时,你的程序需要处于某个“Top”列表中。

     

    考虑到这些,我根据我的经验汇总了一个列表,将帮助你使你的iPhone程序获得成功。

     

    读文章 »

     
  • 开始学习iPhone编程之三 – Hello world

    介绍:

    许多人对iPhone开发知之甚少,本教程的目标是写一个运行在iPhone模拟器上的“Hello World”程序。如果你不喜欢读这十个步骤,那么你可以直接去观看教程视频

     

    读文章 »

     
  • iPhone静态库项目模板

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

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