ios初学者常犯得内存管理错误
来源:互联网 发布:粘土动画制作软件 编辑:程序博客网 时间:2024/04/28 10:32
submitBtn = [UIButtonbuttonWithType:UIButtonTypeRoundedRect];已经相当于autorelease了!!!!
谨记啊!!!
只有alloc new copy方法产生的新对象才需要release!!!!
其它的都不需要!!!
果然还是因为不熟悉!!
今天有时间所以测试了一下
nsmutablearray 在addobject时候会将引用计数+1,而在removeobject或者[array release]时候会将obj的引用计数-1
2012-5-16号发现一个新问题,我在使用函数获取http请求时
-(void)toGetLiveUrl
{
NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc]init];
[[AppDelegatesharedInstance]beginOverlay:@"正在获取直播视频信息..."];
id json = [[AppDelegatesharedInstance].leshiHttpgetLiveInfo:self.activityid];
[[AppDelegatesharedInstance]endOverlay];
if(json)
{
NSDictionary *dict = (NSDictionary *)json;
liveUrl = [dict objectForKey:@"iphone_url"];//问题,由于此方法获取得url不是alloc出来得,因此计数为1,而且由于附近有nsautoreleasepool,当pool release时候此url//也被释放,所以下面调用toPlayVideo时候liveurl为空,报错
//因此应该改为self.liveUrl = [dict objectForKey:@"iphone_url"];
NSLog(@"liveUrl = %@",liveUrl);
}
[pool drain];
//TODO获取直播url,如果没有,则等待从faye里获取
if(liveUrl)
{
[selfperformSelectorOnMainThread:@selector(toPlayVideo)withObject:nilwaitUntilDone:YES];
}
}
今儿又出一个问题,我申明了一个变量叫NSString *path , 使用
@property (nonatomic,assign)NSString *filepath;来申明,然后在初始化时用语句:
filepath = [documentsDirectorystringByAppendingPathComponent:@"test.txt"];
然后在onclick函数中使用该变量时就出错了,原因是因为filepath不是new或者alloc出来的变量,是属于autorelease类型的,在函数结束时(表面现象是这个)就被自动release了,所以使用出错
将其改为
@property (nonatomic,retain)NSString *filepath;
申明时用
self.filepath = [documentsDirectory stringByAppendingPathComponent:@"test.txt"];
这样会给filepath引用计数加一,就不会出现自动release现象了。
- ios初学者常犯得内存管理错误
- ASP初学者常犯的几个错误
- ASP初学者常犯的几个错误
- ASP初学者常犯的几个错误
- ROR初学者常犯的低级错误
- Java初学者常犯的错误
- ASP初学者常犯的几个错误
- ASP初学者常犯的几个错误
- 避免CSS初学者常犯的那些错误
- 关于for循环的一个初学者易犯得错误。
- 常犯的错误
- 常犯的错误
- 【程序员常犯得N个错误】之保留字用作变量
- 【程序员常犯得N个错误】之文件未保存即运行
- 【程序员常犯得N个错误】之入口类和文件名不同
- 大数据学习(机器学习)初学者常犯的9个错误
- 新员工常犯五个错误
- 经理人常犯的错误
- Sql 六
- 长连接和Keepalive详解
- 程序员必知8大排序3大查找(一)
- system()返回值
- MFC学习之路(八) 关于多态
- ios初学者常犯得内存管理错误
- 使用VC6.0实现窗口的任意分割(1)
- 函数形参传递
- 数学是成就卓越开发人员的必备技能
- ubuntu安装net-snmp-5.5.1方法总结
- 打印图幅很长的GIF吉他谱
- loadrunner Error code:10053
- 上来电阻和下来电阻
- 使用VC6.0实现窗口的任意分割(2)