新手求助,内存释放问题

pcsuite 2011-10-31 04:05:04
1.删除字符串内特定的字符-(void)delSpace:(NSMutableString *)strSrc delCh:(char)ch
{
int iCur = 0;
while (iCur < [strSrc length]) {
NSString* chr = [strSrc substringWithRange:NSMakeRange(iCur, 1)];
//NSLog(@"count = %d",[chr retainCount]);
char chValue = [chr characterAtIndex:0];
if (chValue == ch) {//找到字符
[strSrc deleteCharactersInRange:NSMakeRange(iCur, 1)];
[chr release];
chr = nil;
continue;
}
iCur++;
[chr release];
chr = nil;
}
}测试结果:内存只增不减,具体见代码我已释放内存。
2.
NSMutableString *x = [[NSMutableString alloc] init];
NSDictionary *temp = [self aa:x];
-(NSDictionary *) aa:(NSString*x)
{
NSDictionary *temp = [NSDictionary dictionaryWithObjectsAndKeys:tempMin,@"start",restCurrent,@"rest",nil];
return temp;
}
aa函数类添加自动释放池,那么temp将会被释放没有返回结果。
如果定义temp为autorelease那么等到整个函数结束时才释放,我想再这个函数结束的时候就将其释放并有结果返回。

3.while()
{
while()
{
NSString* a = [NSString stringWith:@""];
a = [x substringfrom:0];
}
}
如此循环一万次再跳出,执行过程当中内存不断增加,用什么方法让内存增增减减,最后平衡。
初学,望大家指教,谢谢。
...全文
139 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小迷 2012-01-12
  • 打赏
  • 举报
回复
3.while()
{
while()
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString* a = [NSString stringWith:@""];
a = [x substringfrom:0];
[pool release];
}
}

1, 2参考3.
pcsuite 2011-10-31
  • 打赏
  • 举报
回复
谢谢,我现在用的版本是4.1,你说的这种技术这个版本不支持。
zzxxdd 2011-10-31
  • 打赏
  • 举报
回复
IOS 5 ARC去了解下

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧