——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、OC简介
OC不是一门全新语言,它是在C语言基础上增加了一层最小的面向对象语法,OC完全兼容C语言,可以在OC代码中混入C语言代码,甚至C++代码,可以使用OC开发mac os x平台和ios平台的应用程序。
二、OC中的关键字
这些都是常用关键字
@interface , @implementation, @end, @public, @protected
@private, @selector, @try, @catch, @throw, @finally, @protocol
@optional, @required, @class, @property, @synthesize, @dynamic
BOOL Class SEL YES NO id self super nil atomic nonatomic retain assign copy block ….
大部分关键字都是以@开头的,但是也有不是@开头的。
三、OC中增加的数据类型
类型 | 描述 |
---|---|
BOLL | 常量值是YES 或者 NO |
NSObjict * | OC中的对象类型 |
id | 动态对象类型,万能指针 |
SEL | 选择器数据类型 |
block | 代码块数据类型 |
四、OC的语法
1.头文件
#import
在oc中用#include也是可以的,它们都是用来拷贝文件的,区别是:import 是include的升级版,import可以自己防止重复拷贝。
2.printf和NSLog的区别
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
printf("hello,world!\n");
NSLog(@"Hello, World!");
}
return 0;
}
输出结果:
区别:接收的参数不同,printf接收的是C语言的字符串,NSLog接收的是OC字符串,打印的信息不同,NSLog会自动换行。
3.面向对象的理解
面向对象是相对面向过程来说的。
面向对象和面向过程都是一种思想。
面向过程 强调的是功能行为,关注的是解决问题需要哪些步骤
面向对象 将功能封装进对象,强调具备了功能的对象,关注的是解决问题需要哪些对象。
面向对象是基于面向过程的。
特点:面向对象是符合人们思考习惯的思想,可以将复杂的事情简单化,让我们从执行者变为指挥者。
在我们完成需求时,先要钱找具有所需的功能对象,如果对象不存在,那么创建一个具有所需功能的对象,这样简化了开发并且提高了代码复用。
4.类的定义(先声明一个类,再实现一个类)
先设计一个类
如: 事物名称(类名):人(Person)
属性:身高(height)、年龄(age)
行为(功能):跑(run)、打架(fight)
5.方法定义(先声明一个方法,再实现一个方法)
6.实例化对象
我们用类的方式告诉计算机我们需要一个什么样的对象,之后我们要在程序中使用这个对象,就必须先创建一个对象。
7.消息机制
使用对象调用方法就是OC中的消息机制
示例代码:
#import
//类的声明
//在@interface @end之间写类的声明,@end是用来结束声明的
//然后声明类的属性,行为
@interface Person : NSObject
{
//公开成员变量
@public
//所有属性必须写在这个括号中
float _height;//人的身高
int _age;//人的年龄
}
//OC中的方法声明
//1.对象方法-号开头
//2.数据类型一定要用小括号括住
//3.OC方法中小括号就一个作用,就是括住数据类型
-(void)run;
//当方法有参数的时候必须在参数类型前面加上一个冒号
//冒号也是方法名的一部分
-(void)fight:(char *)gongju;
@end
//类的实现
//主要用来实现声明当中的方法,要说明白方法中要干什么
@implementation Person
//方法的实现
-(void)run
{
NSLog(@"我在跑");
}
-(void)fight:(char *)gongju
{
NSLog(@"用%s打架",gongju);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
/*内存变化
1。开辟储存空间
2.初始化成员变量
3.返回指针地址
*/
Person *p = [Person new]; //new操作在堆内存中分配存储空间
//new 一个新对象会再分配一块存储空间
Person *p1 = [[Person alloc]init];//这种方式也可以,这种方式alloc是创建了一个对象,init是初始化
//要给对象中的成员变量赋值和结构体一样
//OC要操作一个对象的属性或行为,必须通过指针操作
p->_age = 23;
p->_height = 172;
p1->_age = 11;
p1->_height = 123;
NSLog(@"age=%d,height=%f",p->_age,p->_height);
//利用对象调用对象方法
[p run ];
[p1 fight:"dao"];
}
return 0;
}
注意点:
1.不能缺少@end
2.不能把实现写到声明中,声明也不能写到实现中。
3.不能把类的声明实现写到函数中。
4.成员变量必须写到声明的大括号中。
5.声明成员变量不能直接赋值。
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-