专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Iphone

为什么在这里会出现“EXC_BAD_ACCESS”. 上面并没有release ArrLat 啊求解,该如何处理

发布时间:2010-05-30 01:24:23 文章来源:www.iduyao.cn 采编人员:星星草
为什么在这里会出现“EXC_BAD_ACCESS”. 上面并没有release ArrLat 啊。。求解
 
 
C/C++ code


      NSArray *ArrLat=[[NSArray alloc] initWithObjects:[dic objectForKey:@"lat"],nil] ;
        NSArray *ArrLng=[[NSArray alloc] initWithObjects:[dic objectForKey:@"lng"],nil] ;
        NSArray *ArrAddress=[[NSArray alloc] initWithObjects:[dic objectForKey:@"address"],nil] ;
        NSArray *ArrName=[[NSArray alloc] initWithObjects:[dic objectForKey:@"name"],nil] ;        
 
        if ([ArrLat count]>0&&[ArrLng count]>0&&[ArrAddress count]>0&&[ArrName count]>0) 
        {
            [self DoAddAnnotation:ArrLat longitude:ArrLng address:ArrAddress title:ArrName ];
        }
 
 
-(void)DoAddAnnotation:(NSArray *)ArrLat longitude:(NSArray *)ArrLng address:(NSArray *)ArrAddress title:(NSArray *)ArrName
{
 
    int num=[ArrLat count];  //为什么在这里会出现“EXC_BAD_ACCESS”. 上面并没有release ArrLat  啊。。求解
 
 
}
 


------解决方案--------------------
[dic objectForKey:@"lat"]返回的是什么?如果是数组,不要用initWithObjects,用initWithArray试试。
------解决方案--------------------
建议在int num=[ArrLat count];之前输出一下ArrLat的retainCount看看是不是计数为0。
而且在调用之前在if判断的时候是没有问题的:
if ([ArrLat count]>0
&&[ArrLng count]>0&&[ArrAddress count]>0&&[ArrName count]>0) 
{
[self DoAddAnnotation:ArrLat longitude:ArrLng address:ArrAddress title:ArrName ];
}
理论上讲你的代码是不应该有问题的。
建议把所有代码贴出来看一下,或者自己在调试的时候看一下在进入方法之前和之后变量的对象是否相同。
------解决方案--------------------
ArrLat 啊,参数最好改其它的名字。不然 int num=[ArrLat count]; 会有一个警告
------解决方案--------------------
貌似是这样的:
NSArray *ArrLat=[[NSArray alloc] initWithObjects [dic objectForKey:@"lat"],nil] ⋯⋯
这么改试试:
NSMutableArray *ArrLat= [[NSMutableArray alloc] initWithCapacity:20];
[ArrLat addObject:@"lat"];

我怀疑 dic 这个对象被强制释放了⋯⋯
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: