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

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.a utorelease 只不 过意味着 预定延迟发送一条 release ,当前引用计数并没有变。

                     

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

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

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


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

 

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

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

 

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

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

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

 

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

 

                      1.类目

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

                       2.延展

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

                       3.协议

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

                       4.继承

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

 

                     

                     


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值