星空网 > 软件开发 > 操作系统

[好程序员训练营]Objective-C学习笔记---构造函数和析构函数

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的OC语言笔记,期待与您交流!  

 

  简单的讲,构造函数就是在创建一个对象的时候起到初始化的作用,对这个对象里的一些成员变量进行初始化,析构函数就是在对象被删除进行一些清理工作,也就是专门的扫尾工作,下面用代码来进行具体说明。

 

一、初始化函数

  在OC中凡是已init开头的函数我们都称之为初始化函数,在声明初始化函数的时候,不带参数的一般直接声明为“-(id)init”,带参数的一般声明为“-(id)initWith...”。

 1 @interface Person:NSObject{ 2 @private 3   int age; 4   NSString *name; 5 } 6 -(id)init;          //不带参数的初始化函数 7 -(id)initWithname:(NSString *)newname age:(int)newage;  //带参数的初始化函数 8  9 @end10 11 12 @implementation Person13 14 -(id)init{15   self = [super init];16   if(self){17     name = @“xiaoming”;18    age = 20;19   }20   return self;21 }22 23 -(id)initWithname:(NSString *)newname age:(int)newage{24   if(self=[super init]){25     age = newage;26     name = newname; 27   }  28   return self;29 }30 int main(int argc, const char * argv[]) {31 32   Person *p1 = [[Person alloc] init];       //对象生成后调用初始化函数  33   Person *P2 = [[Person alloc] initWithnam:(NSString *)xiaohong age:19];34   //调用带参数的初始化函数进行初始化35   return 0;36 }

这段代码里,在Person类中声明了,两个初始化函数,第一个带参数第二个不带参数,在对对像进行初始化的时候,带参数的初始化函数显得更为灵活,里面的初始值可以自己改动。

 

二、析构函数

  析构函数声明为“-(void)dealloc”这个函数我们不能通过对象去人为的调用它,析构函数会在对像快要死的时候自己运行,来看代码。

 1 @interface Person:NSObject{ 2 @private 3   int age; 4   NSString *name; 5 } 6 -(void)dealloc;          //声明析构函数,析构函数只能有一个 7 @end 8  9 10 @implementation Person   //实现Person 类11 -(void)dealloc{12   NSLog(@"this is dealloc function");13   [super dealloc];14 }15 16 @end17 18 Person *xiaoming = [Person alloc];19 [xiaoming release];

  在代码的第六行我们声明了析构函数,并且在第11行处我们对其进行了复写,这个函数会在执行[xiaoming release];的时候运行,因为release函数就是销毁对象。

 

注意:有时候我们复写dealloc函数的时候加上[super dealloc];会出现错误[好程序员训练营]Objective-C学习笔记---构造函数和析构函数images/loading.gif' data-original="http://images0.cnblogs.com/blog2015/758526/201506/011040524416332.png" />

这是因为ARC是iOS 5推出的新功能,全称叫 ARC(Automatic ReferenceCounting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。该机制在iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2可以使用该机制。简单地理解ARC,就是通过指定的语法,让编译器(LLVM3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(StaticAnalyzer)工具。

解决办法:双击中间的工程名称,进入build setting

[好程序员训练营]Objective-C学习笔记---构造函数和析构函数

将中间的Objective-C Automatic Reference Counting改为no就OK了!

 




原标题:[好程序员训练营]Objective-C学习笔记---构造函数和析构函数

关键词:函数

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

CaresPAy公司介绍:https://www.ikjzd.com/w/1302
大龙网:https://www.ikjzd.com/w/1303
米兰网:https://www.ikjzd.com/w/1304
聚贸集团,聚贸控股集团:https://www.ikjzd.com/w/1305
跨境翼_深圳市跨境翼电子商务股份有限公司:https://www.ikjzd.com/w/1306
雨果网:https://www.ikjzd.com/w/1307
秦皇岛到丹东旅游景点大全 秦皇岛到丹东开车多长时间:https://www.vstour.cn/a/408253.html
求推荐适合情侣玩的地方,三天时间,谢谢:https://www.vstour.cn/a/408254.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流