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].leshiHttp getLiveInfo: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 = [documentsDirectory stringByAppendingPathComponent:@"test.txt"];
然后在onclick函数中使用该变量时就出错了,原因是因为filepath不是new或者alloc出来的变量,是属于autorelease类型的,在函数结束时(表面现象是这个)就被自动release了,所以使用出错
将其改为
@property (nonatomic,retain) NSString *filepath;
申明时用
self.filepath = [documentsDirectory stringByAppendingPathComponent:@"test.txt"];
这样会给filepath引用计数加一,就不会出现自动release现象了。