之前基本上搞Android,边学习边做东西,这学期有幸加入到了一个苹果实验室,有个同年级IT大佬教我们开发ios的基本知识。想起之前有个研究生给我们就业指导是说
“学移动端开发,就要先学IOS,要是一上来就搞Android基本上就是废了。”
大概就是这个意思,我也不知道为何发此感叹。不过确实搞移动端开发,怎么只能偏向一科呢?
今天大概学了OC的第一个基础知识:面向对象。(无奈,笔记本win系统,没装开发工具,先不贴图了,全是无聊的文字)
OC和基本上所有的语言一样都需要引入头文件,不过OC是这样的:
#import <...>
#import "..."
例如我们的第一个hello world;
#import <Foundation/Foundation.h>
引入了Foundation的头文件,Foundation是Cocoa框架的一个重要的基础头文件。Cocoa是Mac os X原生的框架之一。
当我们字Xcode中创建oc程序时写对象,就是new cocoa class文件。
接下来说到oc 中的对象。
oc中的对象和java中的对象一样都是有一个基类NSObject(NS是Nextstep的缩写)。模板大概是这样
类的定义
@interface 类名 :父类
{
实例变量定义;
}
方法生命;
...
@end
和c++一样,我们一般把函数的实现写到外面,而这里直接在另一个文件
@implementation 类名
方法的定义;
...
@end
比如一个Human的对象
@interface Human : NSObject
-(void)speak;
@end
@implementation Human
-(void)speak{
NSLog(@"I speak chinese");
}
@end
上面就定义了一个Human 的类,当我们需要调用这个方法时就这样
...
#import "Human.h"
int main(int args,const char *argv){
...
Human *human = [[Human alloc]init];
[human speak];
...
}
其中[obj msg]为OC中的消息表达式,我们调用msg的方法就是这样调用,告诉obj,我要调用 msg方法。
函数的声明和定义这里解释下,
返回类型和参数都是用小括号包住的
-(int) getWeight:(int)id{
...
}//这里获取指定id号的体重。
多个参数是这样
-(datatype) func:(datatype)arg1 columnName:(datatype)arg2...{
}
例如:
-(float)getCost:(float)price Number:(int)number{
return price*number;
}
调用时就这样
...
[obj getCost:5.5 Number:10];
...
注意这里没有写类中的属性定义生命,以及解释function前面(+)和(-)的区别,下次再详谈。