Objective-C知识总结

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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个字节

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航