for(inti=0;i<largenumber;i++){ Person * p = [Person person];代码的问题

原创 2015年11月17日 16:02:11

int largenumber = 1000000000;

                      for(inti=0;i<largenumber;i++){

                                        Person * p = [Person person];

                                      [p study];

                      }

                  这段代码有什么问题,应该怎么去改?为什么?(不要修改以写出的代码)

 

                      因为便利构造器产生的对象如果没有autoreleasepool的话是无法释放的,所以当循环数值过大时,产生的对象会越来越多而且使用过的对象无法释放,内存占用越来越大,严重影响性能.所以要在for循环中使用autoreleasepool,

 

                      intlargenumber = 1000000000;

                      for(int i=0;i<largenumber;i++){

                                             @autoreleasepool{

                                                          Person * p = [Person person];

                                                       [p study];

                                             }

                      }


简述内存管理的原则. 按照默认法则.哪些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?

 

:      1.对你自己拥有的对象负责,你只能释放你拥有的对象。

                   2.凡是你通过retainalloccopy等获得了所有权的对象,都必须在你不再使用它的时候,由你来releaseautorelease等手段来释放对它的所有权。

                      3.在一定的代码段内,对同一个对象所做的retainalloccopy的操作次数应该与releaseautorelease操作的次数相等。

                      4.可以在类的dealloc方法中释放你所占有的实例变量。

                      5.对于便利构造器和访问器来说,你没有通过retainalloccopy获得对象的所有权,因此在这些情况下你无须对获得对象进行额外的释放操作。

                      6.autorelease只不过意味着预定延迟发送一条release,当前引用计数并没有变。

                     

                      通过alloc copy retain 生成的对象需要手动释放。

                      实现类的dealloc方法,在dealloc方法中,对持有的对象进行release操作。

                      过意味着预定延迟发送一条release,当前引用计数并没有变。


@class和#import的区别? @class和#import的使用场景是什么?

 

                      @class是标记一个字符串可以作为类名使用,#import是将一个文件的内容复制到当前文件中。

           在类的接口部分中需要声明其他自定义类型变量时,可以在类的头文件中使用@class标记某个字符串作为类名使用。在类的实现部分需要使用其他自定义类型对象时,需要在类的实现文件中使用#import导入头文件。

 

协议是什么?协议的property声明用什么属性?为什么?

                      协议是多个类共享的一个方法列表,在协议中所列出的方法没有响应的实现,由其它人来实现

                      协议的property声明用assign特性,因为要防止对象和其代理对象之间相互引用,导致无法释放内存.

 

扩展一个类的功能有几种途径?有什么区别?

 

                      1.类目

                类目可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除原有方法。但是无法添添加实例变量

                       2.延展

                                            延展可以同时添加实例变量和方法,而且添加的方法必须实现,可以视为一个私有的类目

                       3.协议

                                             协议是多个类共享的一个方法列表,在协议中所列出的方法没有响应的实现.

                       4.继承

                                             不但可以添加实例变量和方法,也可以重写原有类的方法.

 

                     

                     


版权声明:本文为博主原创文章,未经博主允许不得转载。

Spark组件之SparkSQL学习1之问题报错No TypeTag available for Person

/** * @author xubo * spark 1.5.2 * * reference :http://spark.apache.org/docs/1.5.2/sql-programmi...

论文笔记之---Learning Deep Feature Representations with Domain Guided Dropout for Person Re-identificatio

Abstract:对于针对同一问题,从来自多个域的数据中提取相关的且具有一般性以及鲁棒性的特征表示具有重大的意义,特别对于那些多重数据,因为其中仅仅单个数据集无法提供丰富变化的数据。本文就提出了利用C...

Multi-Task Learning with Low Rank Attribute Embedding for Person Re-identification

ICCV 2015http://www.umiacs.umd.edu/~fyang/mtl-lorae.htmlPerson Re-identification 方面的文献,本文主要引入了 perso...

论文笔记(一)Deep Ranking for Person Re-Identification via Joint Representation Learning

II related work A讲了传统的feature representation和metric learning的发展过程,并在最后说明他们存在的缺点: (1)效果被提取的feature所...

How to Find the Best Person for the Job

from:    http://blog.renren.com/blog/271761586/734937576When it comes to adding staff, there’s littl...

[Paper note] Embedding Deep Metric for Person Re-identification: A Study Against Large Variation

Paper note for Embedding Deep Metric for Person Re-identification: A Study Against Large Variation E...
  • chn13
  • chn13
  • 2016年10月25日 12:41
  • 467

【行人识别】Deep Transfer Learning for Person Re-identification

解决行人识别中的Re-Identification问题:判断两次出现的人是否是同一个人。在Market 1501竞赛中名列榜首。...

Find person you are mostly like based on HMM image recognition -- only for fun

At last, my experiment program for fun can run without crash.  These days, I am thinking to use HM...

[2016,arXiv] An Enhanced Deep Feature Representation for Person Re-identification

Motivation 作者认为手工的一些颜色特征和 CNN 特征具有互补性,因此需要进行融合;在本文中,手工特征和 CNN 特征联合训练,迫使 CNN 学习到和手工特征互补的特征。 CNN 应该是一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:for(inti=0;i<largenumber;i++){ Person * p = [Person person];代码的问题
举报原因:
原因补充:

(最多只允许输入30个字)