从只Android开发 到 iphone,android两样双修

来源:互联网 发布:game of life 算法 编辑:程序博客网 时间:2024/04/30 20:14

我会从今天 2012-12-28日,将每天学iphone的点滴记载下来,留给后来人。。

 

2012-01-19

创建app 选择Universal  , 这样app 在iphone或者ipad上 都可以运行。。

 

 

 2012-01-18日。。

没有Object-C的基础,请看:http://www.apress.com/book/view/9781430218159

下载 The Obejctive-C 2.0 Programming Language, 请看:http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC

 

Android or Iphone Books Source Code: http://www.apress.com/9781430216261  在Apress 公司。。。

Xcode 在 Developer/Applications 文件夹里面。。叫Xcode...

不同版本的Xcode 可能不能在Mac Os X 里面安装。。但是, 我现在下的Xcode 3.1 与 4.2 无所谓谁安装先后,都可以在  Mac os X 10.6.8 里面 运行。

悲剧,我下的那个Xcode3.1没有iphone SDK.

 

Object-C 是单继承。最基本的对象类就是NSObject. 

 

- (BOOL) sendEmailTo:(NSString *)paramTo
                    withSubject:(NSString *)paramSubject
                 andEmailMessage:(NSString *)paramEmailMessage{

if ([paramTo length] == 0 ||[paramSubject length] == 0 ||[paramEmailMessage length] == 0){

NSLog(@"Empty parameter(s) is/are provided.");
return NO;
}
return YES;
}

 

这里,上面这个方法名 是:sendEmailTo:withSubject:andEmailMessage:    这个好长啊

重载, java里面可以这样: display (int x); display(string x);  可以编译通过。或者 String display(); int display(); 都可以。

object-C 不行, 改参数类型或者返回类型不行,必须该参数名或者参数个数。

 

Allocation /  Initialization  <一个对象必须首先 alloc, 分配内存空间,然后才能 initialize 它的值

 

 2012-01-17日 

Xcode各个版本下载网站: https://developer.apple.com/downloads/index.action

office for mac: http://www.microsoft.com/mac/default.mspx.

 

 

2012-12-28日。。

1, 环境配置。。

    iphone的开发工具用的比较多的就是Xcode..

    cocoa  nib  object-c mac os, 掌握这些新概念

 

2, 文件后缀为xib的, 代表xml interface builder.. 只要学objectC,就可以了。

 

3, 下载 iphone  SDK..

  注册iphone的开发者 账号。http://developer.apple.com/devcenter/ios/index.action

  如果你想在自己的设备iphone上跑你的应用,必须成为独立个人, 要花费99美元。。Individual iPhone Developer Program

  登录进去, 在ios Dev Center里,可以发现ios sdk 5 及 xcode(IDE)

 

4, 可以看sdk document, 上论坛 学习。。 

5. 没有C基础的 可以 看这本书<Absolute Beginner’s Guide to C by Greg Perry >

6. 头文件.h,  包含 方法原型 以及 变量 声明 。。

   .m 文件, 包含方法实现 以及变量实现。。。。  ObjectC 用.h头文件来做接口的声明,用资源文件.m来做实现。

指令: 预处理指令 + 编译指令

预处理指令的定义:

  优先运行于编译的区别程序,处理预处理指令从而用具体文件内容来代替导入语句,执行#if等条件语句,执行定义。

 

预处理指令,以#开头

7. #import  预处理指令, 相同头文件只能导入一次。 如 #import <file.h> or #import "file.h"

8.#define, 在头文件里定义 常量。。

 编译指令, 以@开头

 

* 号, 代表对象要消耗一定的内存。。 对于基本类型是不会消耗内存的。。 所以,不需要*号。。比如下面:

- (void) setAge:(NSUInteger) age;  //age是Integer型, 不占内存
- (void) setName:(NSString*) yourName    andAge:(NSUInteger) age;  //第一个参数是String型的,占内存, 第二个参数的意义:andAge, 类型Integer,名字age.
 

 

instance method : 相当于 实体方法,  

 

9. properties 
在头文件里声明 - @property (nonatomic,retain) NSString * myName;

在m文件里实现 - @synthesize myName;

 

 

2012-01-09

IBOutlet 全称 InterfaceBuilder Outlet,  建立一个lable,就需要定义其类型为这个。。。

xib 的 fileowner里,指定界面的文本与程序里的属性配对。。

 

@synthesize 告诉编译器为属性创建 访问者。。

viewDidLoad 是生命周期里,相当于android里的oncreate方法。。就是应用调用view时,先调用viewDidLoad方法。如果是第一次调用view,还会接着调用ViewWillAppear方法。。

 

NSBundle, 相当于android里的Resources, 就是开发者把所有资源放进iphone项目app的Resources 文件夹里,这些就是bundle. iphone项目的 类似java的 mama100.apk, iphone是mama100.app,

 

 @property 是个相当巧妙的东西, 将java里的getter, setter直接省略了, 系统给你生成。。

 

 

2012-01-10

 

 iphone开发几组易头晕的拖动

一, owner 连接:
方法 1, 先xib里添加button 组件,然后打开双屏幕,右边屏幕是h文件,从xib界面点button,再点ctrl,然后 鼠标长按,再拖动至h文件,会自动生成IBOutlet声明;

方法 2, 先头文件里声明IBOutlet button,然后再在xib里添加button, 然后通过点button,再点击file's owner, 在出现的 connection 监视器里,选择Outlets栏,选择对应的button Outlet,然后点击后面的 小圆圈, 拖动至xib里的button,建立连接;

二, action连接:

方法 1, 同上面一个,前面一样,选中button,点击ctrl,然后鼠标再单击一次button,就会弹出button的快捷窗口,包含:

sent Events, Reference Outlets, Referencing Outlet Collections 三个列表, 因为我们是要定义action, 所以在 sent Events里选择 Touch Up Inside, 选中右边的圆圈,然后拖动到右边 头文件, 就会自动生成 - (IBAction) 的 声明;

 

方法 2, 先在头文件里声明IBAction, 然后再在xib里添加button, 然后通过点button,再点击file's owner, 在出现的 connection 监视器里,选择send Events栏,选择对应的event: Touch Up Insider, 然后点击后面的 小圆圈, 拖动File's Owner, 选择 IBAction , 建立连接;

 

 Iphone 的 按钮状态 比 andriod 容易多了, 不需要像android的那样,设置selector...

 

 2012-01-17日 

Xcode各个版本下载网站: https://developer.apple.com/downloads/index.action

office for mac: http://www.microsoft.com/mac/default.mspx.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最近公司之前Iphone的业务负责人休产假了,所以,iphone开发自然也就落到了我的头上。。