Objective-C简称OC,是一款可以开发Mac OS X平台和iOS平台应用程序的开发语言,目前最新的swift语言也可以开发以上两平台的应用。
OC是面对对象的语言(OC面对对象语言特性请看之前的博客--->也可以点我!<---),在OC代码可以混入C语言代码,甚至是C++代码,也可以和swift进行混编。
好了,简介就说这么多>_<
先来个小问题:为什么OC要使用import引入头文件,import和include的区别?
include 和 import 都是引入头文件
import引入的头文件,可以防止重复包含
include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题
还记得怎么使用预处理指令防止重复包含嘛
#ifndef Zhy#defineZhy//函数的声明voidtest();#endif
使用NSLog输出自带换行
NSLog(@"Hello World!");
OC中相对C语言多了一个BOOL类型用来保存逻辑值,YES(真 1) NO(假 0)
OC中的异常捕捉机制
@try{//有可能会出错的代码<#Code that can potentiallythrowan exception#>}@catch(NSException *exception) {//错误的处理方法<#Handle an exception throwninthe@tryblock#>NSLog(@"%@",exception);//打印出错误的信息}@finally{//无论是否有错都会执行<#Code that gets executed whether or not an exceptionisthrown#>}
OC中类的创建以及在哪里定义成员变量,类方法和对象方法的声明和实现
//人这个类的声明@interfacePerson : NSObject
{//成员变量NSString *_name;int_age;
}//对象方法的声明- (void)duixiangfangfa;//类方法的声明+ (void)leifangfa;@end//人这个类的实现@implementationPerson//对象方法的实现- (void)duixiangfangfa
{
NSLog(@"这是对象方法的实现");
}//类方法的实现+ (void)leifangfa
{
NSLog(@"这是类方法的实现");
}@end
说一下创建对象的语句
Person *p = [Personnew];
[Person new] 做了三件事情
申请内存空间
给实例变量初始化
返回空间的首地址
小问题:申请的空间在内存的哪个区?
new 的时候申请的空间在内存的堆区(程序动态分配的内存空间)
实例变量保存在堆区,指针p保存在栈区,对象方法保存在代码区
堆区有一个_isa指针指向代码区,当对象要调用方法时,首先找p对应的堆区的空间,然后找到_isa指针,再找到_isa指向的代码区的空间,然后到该空间中找 方法
设计一个”学生“类
1> 成员变量
* 姓名
* 生日
1#import<Foundation/Foundation.h>2//日期的结构体3typedefstruct{45//年6intyear;7//月8intmonth;9//日10intday;1112}MyDate;1314//Student类的声明15@interfaceStudent : NSObject16{17@public18//学生姓名19NSString *_name;2021//学生生日22MyDate _birthday;//结构体变量23}2425@end262728//Student类的实现29@implementationStudent3031@end323334intmain(intargc,constchar*argv[]) {35@autoreleasepool {3637Student *stu = [Studentnew];38stu->_name =@"阿衰";3940//第一种方法41stu->_birthday =(MyDate){1983,12,12};42//NSLog(@"%d,%d,%d",stu->_birthday.year,stu->_birthday.month,stu->_birthday.day);4344//第二种方法:定义一个结构体变量45MyDate d1 = {1981,11,11};//定义结构体变量的同时进行初始化46stu->_birthday =d1;4748//第三种方法,逐个赋值49stu->_birthday.year =2014;50stu->_birthday.month =12;51stu->_birthday.day =11;5253NSLog(@"%d,%d,%d",stu->_birthday.year,stu->_birthday.month,stu->_birthday.day);54}55return0;56}
这里主要说明的是调用结构体时的方法
NSString类的用法
NSString是OC中字符串处理的类
NSString *s =@"zzzzzzzzzzzzzz";
NSString*s1 = [NSString stringWithFormat:@"%d",i];
NSString字符串的长度
NSString *s1 =@"zzz";
NSUInteger len= [s1 length];//3//中文字符在NSString中也占1个字节