学习iphone开发略记

来源:互联网 发布:金融公司网络推广 编辑:程序博客网 时间:2024/05/19 05:32

1. 开发用的系统

黑苹果在thinkpad上装不上, 所以去搞了个二手的macbook pro, 速度很快啊, 体验很好


2. 找书

iphone的书太多了, 大致的推荐有:

object-c 程序设计,

iphone开发秘籍

iphone开发基础教程, 

object-c编程之道,

object-c 2.0 with coca foundation (在线教程:http://www.cnblogs.com/yaski/tag/Cocoa/)

其实还想找一本xcode的书, 有感于xcode更新太快, 刚出xcode5, 决定自己读帮助文档


3. 论坛

techcrunch(英文)

cocoa china(非常推荐)


4. 进展

a. 熟悉mac os的使用

        快捷键(http://support.apple.com/kb/HT1343?viewlocale=zh_CN&locale=zh_CN)

        系统偏好设置, 程序菜单位置

        触控板的妙用

        如何切换全屏窗口, 三个手指头一起向某个方向划拉

        如何切换到全屏模式, command+control+f

                两个手指头在触控板上翻页

       

        此外就是屏幕取词+字典和朗读的应用, 对读文档比较有用


b. 读文档

了解xcode ide

               偏好设置相关内容的文档

               应该作为第一篇读的内容: xcode overview


了解xcode基本语法和系统框架/api或者类库

object-c 2.0 with coca foundation 

我的学习是从这个在线教程:http://www.cnblogs.com/yaski/tag/Cocoa/开始的

这个教程的主要思路是先写console程序, 玩弄各种语法特性


主要内容:

第二篇 HelloWolrd

相当于#include的#import

奇怪的函数NSAutoreleasePool:因为历史原因造成的NS打头特色的API命名, 其背后隐藏的三种内存管理方式(Garbage Collection就是系统自动回收, Reference Counted就是引用计数:alloc/retain/release/dealloc,C方式),pool在使用后要drain(放水)

NSLog


第三篇 类的声明和定义

@的编译导向作用:@interface和@implementation+@end, 

函数前面的+和-,类函数和实例函数

[]被用来发送消息,有点函数调用的意思

id = 某物, 创建变量离不开它

大家都从NSObject来


第四篇 继承

其实我们已经玩过从NSObject继承,

重载

self和super,

%@, 相当%s

NSString


第五篇 不知道对象的具体类型,还要调用函数

从Class类型获取类信息,用函数选择器Selector或指针函数调用函数

Class类型在被编译后,里面会有一个变量纪录类的信息,用Class类型对应的字符串,或者用通过Class类型生成的对象来访问到类的信息

函数定义被映射成整数代号,有继承关系的类中相同的函数定义对应相同的代号,这个代号就是Selector,本来只是内部的机器语言,现在也被用来调用函数了

通过Selector调用函数的效率不高, 可以考虑c语言中的指针函数

BOOL其实是signed char

Class的相关用法

Class 变量名 = [类或者对象 class];
Class 变量名 = [类或者对象 superclass];
Class 变量名 = NSClassFromString(方法名字的字符串);
NSString *变量名 = NSStringFromClass(Class参数);

Selector的相关用法

SEL 变量名 = NSSelectorFromString(方法名字的字符串);

SEL 变量名 = @selector(方法名字);

NSString *变量名 = NSStringFromSelector(SEL参数);

[对象 perfomSelector:xxxxx];

指针函数的相关用法

IMP 变量名 = [类或对象methodForSelector:方法名字];

变量名(参数列表);


第六篇 NSObject的奥秘(需再读)

NSObject里面包含一个Class类型的isa变量。(isa = is a pointer)

Class则是一个objc_class结构的指针类型

objc_class中保存了许多信息, 比如超类,子类,名称,函数等,进而衍生出太多太多的东西,这部分我没搞清细节,应该和C++大同小异,先跳过

id是一个objc_object结构的指针类型


第七篇 对象的初始化和实例变量的作用域

最简单的初始化方法: id 实例名 =[类名 new];

其中实际包含了[类名 alloc]和[对象名 init];

也就是说前面的初始化方法相当于:id实例名 =[[类名 alloc]init];

有时候我们需要重载init,来完成我们自己的设计要求

如果需要带参数初始化, 定义自己的initWith函数, 然后这样调用:id实例名 =[[类名 alloc]initwithXxx:xxx Xxx:xxx …];注意记得要重载init,并在init中调用initWith

Object C也支持public, protected, private,其protected和c++貌似有差别,非法访问只是警告,


第八篇 类方法以及私有方法,动态方法替换(需再读)

1,类方法可以调用类方法。

2,类方法不可以调用实例方法,但是类方法可以通过创建对象来访问实例方法。

3,类方法不可以使用实例变量。类方法可以使用self,因为self不是实例变量。

4,类方法作为消息,可以被发送到类或者对象里面去(实际上,就是可以通过类或者对象调用类方法的意思)。

在Cocoa的类库中,类方法被大量的应用于方便的对象创建和操作对象的,在设计自己的类的时候,为了谋求这种方便,可以考虑使用类方法来创建或者操作对象。这个就是类方法的潜规则。注意使用autorelease, 这是延迟释放技术。

注意self和this的有区别,

1,实例方法里面的self,是对象的首地址。class self

2,类方法里面的self,是Class. object self

所有的方法都是公开的,需要自己的私有化手段,这是另一种默契和潜规则。

方法私有化手的段1:类似Java的final,子类重写不报错,但是执行时总是调用超类的方法

方法私有化的手段2:就是从头文件当中不写方法的声明。

方法私有化的手段3:#define FINAL,并把FINAL放在你的函数声明前

注意动态类型和静态类型的概念:

动态类型,就是使用id来定义一个对象,比如说

id cattle = [[Cattle alloc] init];

静态类型,就是使用已知变量的的类型来定义对象,比如说

Cattle cattle = [[Cattle alloc] init];

动态类型和静态类型各有好处,动态类型实现了多态性,使用静态类型的时候编译器会为你检查一下也许会出现危险的地方,比如说向一个静态类型的对象发送一个它没有定义的消息等等。 


第九篇 内存管理

几种内存管理技术

autorelease :系统Garbage Release, 用来传递对象有一定危险性,一般用局部对象中使用

retain,release:注意copy和retain的区别,另外体会一下在异步处理中的价值

iOS 5 ARC: iOS 5 SDK中支持自动引用计数器,不过要求iOS5

NSAutoreleasePool


后记

上本教程中, 作者没有完成他目录上列出的全部内容,不过我想这些都很重要, 所以把目录抄在这里,通过其他教程逐步消灭掉

第10章,到目前为止出现的内存泄漏事件

第11章,字符串,数组以及字典 

第12章,属性

第13章,类目(Categories)

第14章,协议(Protocols)

第15章,Delegate 

第16章,线程

第17章,文件系统

第18章,数据系列化以及保存用户数据 

第19章,网络编程

第20章,XML解析


继续探索

这次我从http://www.cocoachina.com/bbs/read.php?tid=167908开始

先是这个:http://www.cocoachina.com/b/?p=122此篇右边的连接我还准备再看看

接着是这个:http://www.cocoachina.com/newbie/basic/2011/0331/2751.html文章结构清晰,内容基本重复上一节的内容, 扫了一遍,先跳过
另外一个初学者版本: http://www.cocoachina.com/bbs/read.php?tid=8255基本重复, 跳过

以上三个是object c, 
终于到了Xcode, http://www.cocoachina.com/bbs/read.php?tid=949
然后是Interface Builder: http://www.cocoachina.com/bbs/read.php?tid=2615
iOS 5基础教程:[DevDiv翻译]iOS 5 Programming Cookbook_中文版.pdf :http://vdisk.weibo.com/s/ztOdeTxafpT6a
官方教程:https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOSCh/chapters/Introduction.html
另外加一个delegate的好贴:http://www.cocoachina.com/bbs/read.php?tid=169038

有种预感, 这几个教程会满足我的要求了, 我目前最需要的是Interface Builder的, 以及其中各种控件的详细资料

注意到http://www.cocoachina.com/bbs/thread.php?fid=21 板块公告区还有两个好索引,

http://www.cocoachina.com/special/fornew.html

http://www.cocoachina.com/ask/

有点时间了,去好好熟悉下论坛

0 0