
我也刚开始从Java往Objective-C转,大家一起来学习吧!
自己根据一些电子书编写的Iphone SDK to Ipad 教程。
转载请说明出处,谢谢!
Charpter1
1.了解iphoneSDK
Obta ining the iPhone SDK
如果要成为Ipad开发者,你需要到Iphone Developer网站去注册,并且成为会员。http://developer.apple.com/iphone/program/start/register/.
注册是免费的,但是如果你要将你写好的ipad程序放到Appstore卖钱,那就要注册成为正式开发元,会员费99刀!
NOTE:Ipad用的是和iphone和ipod一样的系统。
下载最新的Iphone SDK 目前版本4
在你安装好你的SDK前,你最好升级你的系统,如果是VM安装的MAC系统,那考验你主机的时候到了!最好i5以上,4G内存!
新版本的iPhoneSDK包含了一整套开发Ipad、Iphone、IPod的工具,帮助你开发你的应用程序:
➤➤ Xcode — Integrated development environment (IDE) 完整的开发环境能让你充分管理、编辑、编译你的项目.
➤➤ Dashcode — 老九的理解即使面板式开发,让用户自我创建 Widget。
➤➤ iPhone Simulator — Iphone、Ipad模拟器,可以快捷的子模拟器上Run你写好的程序
➤➤ Interface Builder — 可视化编程工具,和Microsoft的VisualStudio系列类似
➤➤ Instruments — 帮助你的程序最优化的分析工具,包括内存监控
Xcode
启动Xcode, (/Developer/Applications folder)最好是在Dock上做一个链接,方便一点。
Xcode的欢迎界面,看到这个很高兴!
创建一个你自己的Ipad程序,点击Create a new Xcode project,进入程序类型选择界面,你可以看到在窗口的左边有你所开发的程序类型的选择,有Iphone os,有Mac osX,当然我们选择Iphone os。再选择View-based Application。
好到这里我们暂时等等,先讲下面的
2.iphone(Ipad)模拟器
模拟器是个十分有用、而且高效的工具,打开模拟器在/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications 文件夹里面
这是个Simulator模拟器,而不是emulator仿真器。它能做一切真实iphone或者ipad能做的事情,而且有很多版本可以选择,可以选择os版本,从3.0到3.4,硬件选择可以选择iphone或者ipad。Simulator可以在MAC环境下很好的模拟真实的iphone或者ipad终端,从而快捷的进行程序的显示和修改。
将程序从模拟器里删除和在显示用的使用是一样的,用鼠标按住你所安装的软件,等待图片抖动后出现X标记,点击X标记就可以删除,删除后程序所对应的文件夹也一并删除
3.IphoneSDK的框架
Interface Builder
可视化编程可以让我们在用户界面中进行ipad程序编程,能拖动窗口对程序界面进行设计,在代码和页面之间建立链接,能适时反应出代码对程序的影响和作用。
这就是标准的interface Builder界面
Mac os X与 iphone os区别
底层都为Core OS,它是程序的基础,它负责管理内存、文件系统、其它系统任务,,直接和硬件进行通信,Core OS包括:
➤➤ OS X Kernel
➤➤ Mach 3.0
➤➤ BSD
➤➤ Sockets
➤➤ Security
➤➤ Power Management
➤➤ Keychain
➤➤ Certificates
➤➤ File System
➤➤ Bonjour
Core Services layer为Core OS layer提供一个对象服务,它提供对Iphone OS服务的基本的通信,主要由以下部分组成:
➤➤ Collections
➤➤ Address Book
➤➤ Networking
➤➤ File Access
➤➤ SQLite
➤➤ Core Location
➤➤ Net Services
➤➤ Threading
➤➤ Preferences
➤➤ URL Utilities
The Media layer主要为你的Ipad应用提供多媒体应用服务,它包括:
➤➤ Core Audio
➤➤ OpenGL
➤➤ Audio Mixing
➤➤ Audio Recording
➤➤ Video Playback
➤➤ JPG, PNG, TIFF
➤➤ Quartz
➤➤ Core Animation
➤➤ OpenGL ES
The Cocoa Touch layer为Ipad程序提供多种对象函数库应用,如:
➤➤ Multi-Touch events
➤➤ Multi-Touch controls
➤➤ Accelerometer
➤➤ View Hierarchy
➤➤ Localization
➤➤ Alerts
➤➤ Web Views
➤➤ People Picker
➤➤ Image Picker
➤➤ Controllers
Iphone SDK由多种Frameworks(框架)组成:framework 是一种特殊功能的软件函数库
Framework Name Description
AddressBook.framework Provides access to the centralized database for storing a user’s contacts.
AVFoundation.framework Provides low-level C APIs for audio recording and playback, as well as for managing the audio hardware.
AudioToolbox.framework Provides low-level C APIs for audio recording and playback, as well as managing the audio hardware.
AudioUnit.framework Provides the interface for iPhone OS-supplied audio processing plug-ins in your application.
AVFoundation.framework Provides low-level C APIs for audio recording and playback, as well as for managing the audio hardware.
CFNetwork.framework Provides access to network services and configurations, such as HTTP, FTP, and Bonjour services.
CoreAudio.framework Declares data types and constants used by other Core Audio interfaces.
CoreData.framework Provides a generalized solution for object graph management in your application.
CoreFoundation.framework Provides abstraction for common data types, Unicode strings,XML, URL resource, and so on.
CoreGraphics.framework Provides C-based APIs for 2D rendering; based on the Quartz drawing engine.
CoreLocation.framework Provides location-based information using a combination of GPS,cell ID, and Wi-Fi networks.
ExternalAccessory.framework Provides a way to communicate with accessories.
Foundation.framework Provides the foundation classes for Objective C, such as NSObject, basic data types, operating system services, and so on.
GameKit.framework Provides networking capabilities to games; commonly used for peer-to-peer connectivity and in-game voice features.
IOKit.framework Provides capabilities for driver development.
MapKit.framework Provides an embedded map interface for your application.
MediaPlayer.framework Provides facilities for playing movies and audio files.
MessageUI.framework Provides a view-controller–based interface for composing e‑mail
messages.
MobileCoreServices.framework Provides access to standard types and constants.
OpenAL.framework Provides an implementation of the OpenAL specification.
OpenGLES.framework Provides a compact and efficient subset of the OpenGL API for 2D and 3D drawing.
QuartzCore.framework Provides ability to configure animations and effects and then render those effects in hardware.
Security.framework Provides the ability to secure your data and control access to software.
StoreKit.framework Provides in-app purchase support for applications.
SystemConfiguration.framework Provides the ability to determine network availability and state on device.
UIKit.framework Provides the fundamental objects for managing an application’s UI.
4.屏幕分辨率的说明
Ipad屏幕为1024*768,程序显示区域为1004*768,横向以此计算。
5.单线程窗口说明
如果你有一个新的移动应用程序,必须限制其在基本版面全屏幕显示,Ipad程序也不例外。
也不允许有后台程序,因为Iphone OS为单线程系统,这样可节约更多的内存、更多的电力。水果公司就这样定义它的程序,我们不遵守没有办法,除非越狱!
好了,本小节介绍了Iphone SDK的基础,下一节开始,我们来设计我们的第一个应用程序,Hollow World!
要编程肯定要从编程思想开始,发现一篇很好的教程,加上自己的理解,转发给大家!好好学习,天天向上。
1.1 类(Class)与 OOP
1.2 基本框架
1.3 基础知识
1.1 类(Class)与OOP
OOP (Object-Oriented programming )官方的解释是 面向对象程序设计。一个晦涩难懂的概念。所以我们先不要去理解他,就当是一个路的名字先记下来。而这条路是这个教程的第一站。
在我们的生活中,从小学开始,老师就会让我们先读课文,然后归纳一下中心思想。老师这么做的初衷是为了锻炼和培养我们的归纳和总结的能力。而“类”正需要的是归纳和中介,这里有个例子,还是以美女为例,美女就是一类人的总称,但美女其实不是一个实际存在的个体。我想很多人会困扰这句话 “美女其实不是一个实际存在的个体”,其实不需要太多的理清这里的逻辑和哲学关系。美女就是一类美丽的女性的总称,而这个总称就是类(Class), 在大多数书里对Class的解释都是 以车或者动物作为例子,说实话,我个人对车的具体课题不是很懂,对动物我就更不是很了解了。所以我这里就拿iphone做例子来讲解class.
iphone是苹果手机的总称,而iphong 2g ,iphone 3g, iphone 3gs, iphone 4就是这个iphone总称下的的具体实例。如果我们开个手机店,某日,有个完全不懂2g,3g,3gs的客户上门说“我要买iphone”,作为老板的你可能会反问“好的,你要买哪一种iphone,我们这里有2g,3g,3gs甚至4代”。就在这话中就产生了类与类的实际实例。而有点文化知识的顾客应该会马上反应过来,原来iphone还分很多种,而买iphone这句话本身是有问题的,但其实也带来了一点,“买iphone”这句话是没错的,“我想娶一个美女做老婆”也是没有错的。因为这是我们日常生活口语中已经习惯的说法,大家在内心都建立一种规则,你一说,其他人就能理解。而我们回到计算机编程中,他的规则就是类与类的具体实例要一定分的很清楚。如果你对电脑说,“你帮我找个美女出来”,这电脑就开始confusing(傻眼)了。
1.1.1 类
类到底是干什么的。如果有过程化编程经验的朋友,可能一时很难理解,但往往在理解class之后会大大的感慨一下,这东西很有用呀。的确是这样,类真的很好的是把我们现实社会的一些优秀理论引入了编程中。下面我们就开始具体的看看类。
“人”这个字就是一个类。
所以我用中文表达一下这个程序写法:
类 人
用英文就是
class human
而用OC(ObjectiveC以后在文中简称为OC)中我们把 类或者class替换成@interface, 你不要管他这什么意思(我稍后会解释),照抄就可以了:
@interface 人 (中式写法) 或者 @interface human (英文写法)
但大家也知道中式写法是电脑不能接受的,所以我这里的中式写法也是帮助大家理解,但真正写代码的时候,我们必须严格OC的要求去写。
让我们看一下具体找一个代码看一下
@interface human
{
int age;
string gender;
}
-(void) sleep;
@end
而中式写法就是
类 人
{
整型 年龄;
字符串 性别;
}
-(无返回) 睡觉功能;
结束
其实英语有点基础的人,看到英文代码就可以理解了,{ }里的东西就是类的固有特性,比如年龄,是人都有年龄,这是一个固有的特性,而 - 后的东西就是人的动作,而睡觉就是一个经常发生的动作,所以让我们分类加亮代码。
@interface human
{
int age;
string gender;
}
-(void) sleep;
@end
橙色就是定义一个定义类固有的格式,一般大家就是照抄了,但他意思就是定义一个类,也就是告诉计算机这段代码就是告诉你计算机,我正在设计一个类。
红色就是类的固有属性或者特性。这些属性可以变化也可以是固定的,比如按道理来说这性别是固定的,但我们现在的科技,男人变女人,女人变男人也是可能了。所以固定与否就要从实际程序出发。
粉色就是类的功能,也就是类能完成那些动作,我们在这里是要求是人要能睡觉。
是不是很贴近我们的生活呢?而有了“人”这个类,我们就可以在以后的任何程序和游戏中调用它,这样节省了时间,代码也可以重复使用,比如我们今天按老师要求要写一个人力资源管理的程序,定义了一个“人”的类,写的很详细,过了一个星期老师又让我们写成绩单程序,这又是一个基于“人”类的程序,而这时我们只要把上星期写的老的“人”这个类拿来用就可以说。所以如何写的详细和规范就很重要,这也是我们以后章节要讨论的重点。
1.2 基本OC框架
1.2.1 备注 comments
我认为这是写现代程序的基础,他是一个很微小的功能,但我却认为是团队协作的首要任务,做备注。
counter+=1 // counter变量可以自加1,counter是计数器变量
蓝色的部分就是 单行comments,comments就好比你在教科书上做注释,他可以帮助你写的代码,别人可以理解,但计算机在编译程序的时候不会去处理你备注的东西,也可以说这是给人看的,而不是给机器看的。
而comments有两种,第一种大家已经见过,第二种是多行备注
/*
这是一个多行的备注,
可以写多行,而不用把挤在一行上。
*/
而我觉得大家能够掌握这两种就够了。 当行就是以 //开头,没有结尾。行结束就结束了。
多行是以/*开头 */结尾。里面的内容都是备注。
1.2.2 main()
main()是一个程序开始执行的起点,有的书上说是程序的进入点,开始点。你觉得那种好理解,就选哪种方式去理解。
请看代码:(代码有错误,是为了解释调试而错的)
int main (int argc,contst char * argv[])
{
NSAutoreleasePool * pool=[[ NSAutoreleasePool alloc] init];
NSLong ("第一个OC程序,也叫Hello world!");
[pool drain];
return 0;
}
大家现在很可能看不懂代码,很正常,在这段程序里我们只要掌握红色部分的,橙色部分的代码就是固定格式,在以后我会详细讲解,但现在,只要ctrl+c 然后ctrl+v 就可以了。因为他是一个很固定的格式,几乎不需要变。
而红色的这个行
NSLong (@"第一个OC程序,也叫Hello world!");
就是我们学习的第一个句子,他的功能就是在屏幕上输出 第一个OC程序,也叫Hello world! 这行字。
让我们在windows中打开mac虚拟机,然后看图打开Terminal



现在我们开始第一步,建立自己的文件夹
一开始我们先学几个unxi的命令:
查看当前目录命令ls 也就是 dos下的dir命令
cd 命令,和dos一样就不介绍了
mkdir 就是制作一个新的文件夹在当面目录下
先用ls 查看一下当前目录,然后用mkdir建立一个新目录HW,然后用vi 建立一个 test.m的程序文件,什么也不写,保存一下就退出。

保存的步骤
先按 ESC 然后输入:w 最后回车就退出了
退出的步骤
先按 ESC 然后输入:q! 最后回车就退出了,这样就建立了 test.m的程序文件
然后我们打开finder,可以看澳在shuang 下 有个HW目录,然后在目录里有个test.m的文件。

这里我要提醒一下,vi这个命令其实就是打开一个编辑器,其实一般在unix编程用这个就可以搞定,其实做OC的程序也可以在vi下完成,但大多新手可能会不适应,而且可能连unix也不懂,所以我采用了下面的方法。但我想说的是OC的程序,其实不用xcode也已完成,请牢记这一点,这也是我花了这么多时间解释 unix命令和vi的原因。
双击test.m我们将通过xcode打开testm.m文件,很明显里面是空的
然后我们在windows中打开这个教程,复制代码网页上的代码,然后在 虚拟机里粘贴上去,当然vmware很强大,支持这样的复制和粘贴,给新手带来了强大的便利。
上篇开始,这篇继续 先准备好你的工具,pc or mac? 有mac是有钱人,我就没有mac 如果没有mac的同学,又习惯windows系统,那你们可以看看这篇文章 http://bbs.weiphone.com/read-htm-tid-853658.html,教你怎么在windows系统下成功虚拟出苹果的Snow Leopard系统10.4.6。 在你安装好了,这一切之后,你还要记得下载iphone SDK3.4。安装 最后来一张成功在虚拟机下运行的Snow Leopard 下SDK图!


我是一个超级苹果迷+老乔的fans和Google的簇拥,一切新奇的事物我都好奇,摄影、运动、旅游、读书、电影、游戏都是我的爱好,荒淫大家给我留言,发邮件,请我吃饭、带我旅游(也不要忘记了我的领导同志!)……
最近留言