目录
一、OC语言介绍
1 早在20世纪80年代早期,BardCox发明了Objective-C,扩充了C,面向对象的编程语言。
2 NextSTEP简称NS;
1985年,Steve Jobs成立了NeXT公司;
1988年,Next Software公司获得了OC语言的授权,NEXTSTEP环境,为了苹果操作系统创建的开发包,发行操作系统OSX的基础,
1996年,苹果公司收购了NeXT Software公司,NEXTSTEP环境为了苹果操作系统,创建的开发包,发行操作系统OSX的基础。这个开发环境版本被苹果公司更名位Cocoa框架。
3 Cocoa框架是苹果公司为了MAC OS X所创建的原生面向对象的编程环境。Cocoa应用程序一般在苹果的工具xcode上用OC编写的应用程序。
APP Store (全称:Application Store应用程序商店)
使用cocoa编程环境开发的应用程序叫cocoa应用。
使用cocoa touch编程框架 -> IOS app
cocoa框架由两部分组成,Foundation框架和Application Kit框架。
Foundation框架是基本框架,包括:字符串、数字、数组、字典集合等。
Application Kit框架,应用程序工具箱,包括实现程序图形、事件驱动和用户界面的全部对象,如:窗口、对话框、按钮、菜单。。。而且这个列表还在不断添加。
二、IOS系统
IOS系统是苹果硬件(便携设备)上的一个操作系统,在2007年1月9日,MacWorld大会上公布的系统,最初设计给iPhone使用的,后来陆续用到iPod touch、iPad、apple TV等苹果产品。
开发方向:IOS App、IOS Game
使用语言:IOS App(C、OC)、IOS Game(C、OC、C++)
第一个程序
1 iOS
create project -> ios -> application -> single view application -> run
2 OSX
create project -> osx -> create project -> command line tool -> type:foundation
测试:C语言的语法是否可以在main.m文件使用变量、条件分支、循环、函数、结构体、指针。
三、在OC语言开发中使用C语言语法
1 main.c -> main.m
2 include - > import(避免重复导入)
标准函数库 -> 库(Foundation)
3 输出函数printf -> NSLog(加入了时间、地点)
在OC中所有的字符串前都要加上'@'符号
4 在编译的时候,gcc不支持OC的新语法,应该使用新的编译命令clang,编译链接时,需要指定使用的框架(-framework Foundation)
命令行:clang -framework Foundation main.m
OC中独有的内容
1 xcode编译器,LLVM:LowLevelVirtualMachine
2 逻辑值数据类型
BOOL = YES(1) // NO(0)
练习:定义一个函数,求两个数是否相等,函数的返回值是逻辑只类型,在main函数中,根据逻辑值输出两个数是否相等。
1 //bool 2 #import <Foundation/Foundation.h> 3 //练习:定义一个函数,求两个数是否相等,函数的返回值是逻辑值类型,在main函数中,根据逻辑值输出两个数是否相等。 4 BOOL test(int i1,int i2) 5 { 6 if (i1 == i2) { 7 return YES; 8 }else{ 9 return NO; 10 } 11 } 12 13 int main(int argc, const char * argv[]) 14 { 15 16 @autoreleasepool { 17 BOOL b; 18 int i1 = 4,i2 = 8; 19 b = test(i1, i2); 20 if (b) { 21 NSLog(@"相等"); 22 }else{ 23 NSLog(@"不相等"); 24 } 25 NSLog(@"Hello, World!"); 26 //逻辑值数据类型 27 bool b1 = true; 28 NSLog(@"b1:%d",b1); 29 BOOL b2 = YES; 30 NSLog(@"b2:%d",b2); 31 32 } 33 return 0; 34 }
四、面向对象
1 类是一种主观思想,是对我们需要解决问题的一种抽象,是创建对象的模型。
2 对象就是具体的数据集合,计算机会把类->实例化->对象。
3 第一个面向对象程序
设计类Student,一个类由两个部分组成.h(声明)和.m(实现)
类的实例化->对象:
通过类发送alloc(开辟内存空间)创建对象,通过对象(指针变量)找到内存的对象。
向对象发送消息(函数),此时对象就会响应消息。
对象如果有属性,对象.属性=值,给对象的属性赋值。
练习:创建一个point类,有横坐标x,纵坐标y,能显示位置(show方法),创建两个位置并显示。
main.m
1 // 2 // main.m 3 // 第一个面向对象程序 4 // 5 // Created by tarena on 13-12-16. 6 // Copyright (c) 2013年 tarena. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 #import "Student.h" 11 12 int main(int argc, const char * argv[]) 13 { 14 15 @autoreleasepool { 16 //创建Student对象,alloc 开辟内存空间 17 //Student类 -> alloc实例化 -> stu对象(指向首地址) 18 Student* stu = [Student alloc]; 19 NSLog(@"stu address:%p",stu); 20 stu.age = 12; 21 [stu study];//调用类中的动态(-)方法 22 //[Student study];//调用类中的静态(+)方法 23 24 } 25 return 0; 26 }
Point.h
1 // 2 // Point.h 3 // 第一个面向对象程序 4 // 5 // Created by tarena on 13-12-16. 6 // Copyright (c) 2013年 tarena. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface Point : NSObject 12 13 @end
Point.m
1 // 2 // Point.m 3 // 第一个面向对象程序 4 // 5 // Created by tarena on 13-12-16. 6 // Copyright (c) 2013年 tarena. All rights reserved. 7 // 8 9 #import "Point.h" 10 11 @implementation Point 12 13 @end
Student.h
1 // 2 // Student.h 3 // 第一个面向对象程序 4 // 5 // Created by tarena on 13-12-16. 6 // Copyright (c) 2013年 tarena. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface Student : NSObject 12 13 @property int age; 14 15 -(void)study; 16 @end
Student.m
1 // 2 // Student.m 3 // 第一个面向对象程序 4 // 5 // Created by tarena on 13-12-16. 6 // Copyright (c) 2013年 tarena. All rights reserved. 7 // 8 9 #import "Student.h" 10 11 @implementation Student 12 -(void)study 13 { 14 NSLog(@"%d调用了study方法",self.age); 15 } 16 @end
说明:因为OC文件太多,代码也太多,就不分享了。