学习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=2615iOS 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/
有点时间了,去好好熟悉下论坛
- 学习iphone开发略记
- 物资供应管理系统开发记略
- 学习iphone开发
- 学习iphone开发
- 学习iphone开发
- iphone 开发学习
- iphone开发学习资源
- iphone开发学习网站
- Iphone 开发学习纪录
- iphone开发学习视频
- iPhone开发学习笔记
- SurfaceView开发示波器<略>
- VOA 学习总攻略
- 学习iphone开发的网站
- iPhone开发学习笔记 - 目录
- iPhone开发学习:使用UITableView
- 从零开始学习iphone开发课程
- 学习Iphone开发的准备
- Android中的定时器AlarmManager
- 感悟项目收尾——日程管理系统
- 使用JDBC在MySQL数据库中快速批量插入数据
- [iOS]Xcode中警告处理
- javax.naming.NameNotFoundException: QueueConnectionFactory not bound
- 学习iphone开发略记
- STM32L050 低功耗设计
- 机器学习-线性回归
- Maven骨架archetype
- Day01(HTML)
- Android 设计模式 笔记 - 策略模式
- 微软Detours链接地址
- 项目从wins到linux
- 自定义控件(一) 一个比例饼状图