#import <UIKit/UIKit.h>
@interface ViewController : UIViewController{
NSMutableArray *_mArray;
NSMutableArray *temp;
}
@property(nonatomic ,retain)NSMutableArray *mArray;
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize mArray = _mArray;
-(void)reResultRetainCount{
static int i = 1;
NSLog(@"get %d _mArray retain count %d",i++,[_mArray retainCount]);
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// [self reResultRetainCount];
//
// _mArray = [[NSMutableArray alloc] init];
//
// [self reResultRetainCount];
//
// [_mArray release];
[self reResultRetainCount];
_mArray = [[NSMutableArray alloc] init];
[self reResultRetainCount];
[self.mArray addObject:@"123"];
[self.mArray addObject:@"456"];
[self.mArray addObject:@"789"];
/*
NSLog(@"%@",self.mArray);
[_mArray removeAllObjects];
NSLog(@"%@",self.mArray);
*/
[self reResultRetainCount];
NSLog(@"%@",_mArray);
temp = [_mArray copy];
[_mArray release];
[self reResultRetainCount];
if (temp) {
//NSLog(@"temp");
NSLog(@"%@",temp);
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//
//-(void)setMArray:(NSMutableArray *)mArray{
//
// if (_mArray != mArray) {
//
// //_mArray = mArray;
//
// [_mArray release];
// _mArray = [mArray retain];
//
// }
//
// NSLog(@" set mArray retain count %d",[mArray retainCount] );
//
//}
@end
总结,不需要。在跑道dealloc 里面去释放的时候,再去removeallobjects。
最多,加上 currentObjets = nil这句话。
安全释放。合理分配。
共享内存,不要随便放。
和同事辩论,结果,V字手势。
分享到:
相关推荐
Spring Framework 4.1.6.RELEASE 是一个重要的版本,它是Spring框架发展史上的一个重要里程碑。这个版本在2015年发布,为开发者提供了稳定、高性能和丰富的特性集,以便构建高质量的企业级Java应用程序。以下是对这...
10. **持续集成(CI)**:结合持续集成系统,自动进行Release版本的构建和测试,确保每次代码更改后,程序的稳定性都能得到及时验证。 最后,对于压缩包中的“QtDbgTest”文件,这可能是用于调试或测试的工具或脚本。...
rpmforge是Dag、Dries 和其它软件包的组合。它们为 CentOS 提供了超过10000个软件包。rpmforge不是redhat Linux产品或 CentOS 的组成部分,但它是为这些 Linux 套件而设计的。
因此,我们至少需要每周进行一次 Release 版本的测试,以便在紧凑的开发周期内节省潜在的排故时间。 规则 2: 不要随意删除 Release 版本需要的代码 在编译 Release 版本时,编译器会主动排除在代码中存在的宏,...
JetbrainsCrack-3.1-release-enc.jarJetbrainsCrack-3.1-release-enc.jarJetbrainsCrack-3.1-release-enc.jarJetbrainsCrack-3.1-release-enc.jarJetbrainsCrack-3.1-release-enc.jarJetbrainsCrack-3.1-release-enc...
EMQPLUS企业版是基于Erlang/OTP开发的MQTT消息服务器,具备百万级高并发、毫秒级低时延、分布式集群和高可靠性等特性,适用物联网、车联网、智能硬件和移动消息等场景。 目前已广泛应用在全球市场,包括中国、北美、...
- **Release模式**:Release模式则倾向于动态链接到运行时库,这样可以减少程序的体积,但需要目标系统上安装相应的库。 4. **异常处理** - **Debug模式**:在Debug模式下,异常处理更为详细,可以提供更多的错误...
Web V3.2 release的测试工作是对一系列产品的全面评估,包括JHAppform、JHCodesign、JHComeeting、JHSecurity和JHInsight等,还有JHDam、JHDS和JHApp。测试过程覆盖了从基础功能到高级集成,涉及到多个定制项目的...
在IT行业中,"app-release"通常指的是...总的来说,"app-release"涉及Android应用的发布流程,包括代码优化、签名、打包APK、测试、发布到应用市场以及后续的维护和更新。这些环节对于确保应用质量和用户体验至关重要。
app-release.apk 测试
本文档,"EEMBC Version 1.1 ReleasePorting Guide and Release Notes" 是一份针对EEMBC基准测试的移植指南和版本发布说明,旨在帮助开发者将EEMBC测试套件适应不同的硬件和软件平台。 **免责声明与版权** 在开始...
标题《nose Documentation Release 1.2.1》指的是这是关于nose测试框架的文档,版本为1.2.1。nose是一个Python的测试框架,它简化了Python代码的测试过程,使得开发者可以更容易地编写和运行测试用例。 描述中提到...
此外,gtest还支持参数化测试,允许同一测试用例针对不同的输入数据运行,以及可以自定义测试事件监听器来扩展其功能。 在`googletest-release-1.12.1`目录中,你可以找到以下关键组件: 1. `include/gtest`: 这个...
程序在debug可以正常运行,但是在release版后异常结束,系统又没有提供任何信息情况下,或者程序发布后在客户手中出现异常崩溃,但自己测试又不能复现问题,要是能捕获到异常时相关信息就很好定位问题了。...
相比之下,Release模式用于软件开发的后期阶段,当代码经过充分测试并准备部署到目标设备时。在这一模式下,编译器的目标是生成尽可能小且运行效率高的可执行文件。这意味着编译器会进行深度优化,包括但不限于函数...
- 系统更新:虽然 `lsb-release` 在 CentOS 6.5 中是必要的,但请注意,随着 CentOS 版本的升级,可能需要更新 `lsb-release` 到最新版本以保持兼容性。 - 安全性:保持 `lsb-release` 更新有助于防止潜在的安全...
spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-3.2.4.RELEASE.jar spring-webmvc-...
总之,`googletest-release-1.10.0.tar.gz` 提供了一个强大的 C++ 单元测试框架,它不仅有助于确保代码质量,还支持源码学习,帮助开发者提升测试技巧和代码可维护性。无论是初学者还是经验丰富的 C++ 开发者,都...
完成编译器设置后,还需要对链接器进行相应的配置: - 转到`Linker`选项卡中的`General`部分。 - 查找`Debug Info`选项,并将其设置为`Generate Debug Info`。这一步确保了链接器也会生成调试所需的信息。 - 这样...