注册 登录
主题 : 程序崩溃,大神能帮看看问题出在哪儿吗?附代码和截图。。
级别: 侠客
UID: 489723
精华: 0
发帖: 105
可可豆: 267 CB
威望: 267 点
在线时间: 126(时)
注册时间: 2015-07-17
最后登录: 2017-09-26
0 楼:  发表于: 2017-09-06 14:46    发自: Web Page
来源于 一般提问 分类

程序崩溃,大神能帮看看问题出在哪儿吗?附代码和截图。。   

请看截图,大家碰到过这种问题吗?
以前没有出现过,我只是加了一个block传值,把从服务器读到的数据传出去,之后就这样了。。
连接服务器的代码如下

-(void)connectRealTimeDataAPI:(NSString *)hour code:(NSString *)CodeID
{
    NSString * filePath = @FILEPATH;
    filePath = [filePath stringByAppendingString:hour];
    filePath = [filePath stringByAppendingString:@"/"];
    if (CodeID == nil) {
        return;
    }
    filePath = [filePath stringByAppendingString:CodeID];

    
    filePath=[filePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL*url=[NSURL URLWithString:filePath];
    
    NSURLRequest *request=[NSURLRequest requestWithURL:url];
    
    //发送异步请求
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *reponse, NSData *data, NSError *error) {
        
        NSLog(@"Data length ======== %ld", data.length);

if (error == nil)
{
    
    NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"string is %@",string);
    
    
    //JSON装入dic
    NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:[string dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
    NSLog(@"dic is %@",dic);
    
    
    NSMutableArray *tempArray = [NSMutableArray array];
    
    
    //如果此处dic为空,则没有故障数据,则tempArray要返回nil
    
    if (dic == nil) {
        
        tempArray = nil;
    } else
    {
        for (NSDictionary *dataDict in dic) {
            //将URL数据传到model中
            NSString * code = [NSString stringWithFormat:@"%@", [dataDict objectForKey:@"indexid"]];
            NSString * cid = [NSString stringWithFormat:@"%@", [dataDict objectForKey:@"id"]];
            NSString * time = [NSString stringWithFormat:@"%@", [dataDict objectForKey:@"indexdatetime"]];
            NSString * indexData = [NSString stringWithFormat:@"%@", [dataDict objectForKey:@"indexdata"]];
            
            OptimizeModelRealTimeModel *model = [[OptimizeModelRealTimeModel alloc] init];
            model.code = code; //代码
            model.cid = cid; //序号
            model.time = time;
            model.indexData = indexData;
            
            [tempArray addObject:model];
        }
    }
    self.realTimeDataArray = [tempArray copy];

    if (self.realTimeModelBlock) {
        self.realTimeModelBlock(self.realTimeDataArray);
    }
    
}else
{
    UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:@"错误提醒!" message:@"网络错误" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
    [Alert show];
}
    }];
  
}


图片:Snip20170906_23.png
图片:Snip20170906_24.png
级别: 侠客
UID: 489723
精华: 0
发帖: 105
可可豆: 267 CB
威望: 267 点
在线时间: 126(时)
注册时间: 2015-07-17
最后登录: 2017-09-26
1 楼:  发表于: 2017-09-06 14:51    发自: Web Page
内存错误,不是每次都能重现,所以调不出来!
级别: 精灵王

状态: 连续签到 - [70天]
UID: 332950
精华: 0
发帖: 775
可可豆: 1271 CB
威望: 1057 点
在线时间: 398(时)
注册时间: 2014-06-25
最后登录: 2017-09-08
2 楼:  发表于: 2017-09-06 15:04    发自: Web Page
block怎么定义的看看
级别: 侠客
UID: 489723
精华: 0
发帖: 105
可可豆: 267 CB
威望: 267 点
在线时间: 126(时)
注册时间: 2015-07-17
最后登录: 2017-09-26
3 楼:  发表于: 2017-09-06 15:45    发自: Web Page
回 2楼(mushroom) 的帖子
typedef void(^CallRealTimeModelBlock)(NSArray *realTimeModelArray);
@property (nonatomic, strong) CallRealTimeModelBlock realTimeModelBlock;
级别: 侠客
UID: 489723
精华: 0
发帖: 105
可可豆: 267 CB
威望: 267 点
在线时间: 126(时)
注册时间: 2015-07-17
最后登录: 2017-09-26
4 楼:  发表于: 2017-09-06 15:56    发自: Web Page
回 3楼(ssmeron) 的帖子
-(void)connectRealTimeAPI
{
    [self.activityIndicatorView startAnimating];

    [self.connectOptimizeModelAPI connectRealTimeDataAPI:@"hour" code:[self getSelectItemCode]];
    __block ConnectOptimizeModelAPI *connection = self.connectOptimizeModelAPI;
    self.optimizeSimpleModel = [[OptimizeSimpleModel alloc] init];
    __weak typeof(self) weakSelf = self;
    connection.realTimeModelBlock = ^(NSArray *realTimeModelArray) {
        //获取数据
        weakSelf.ArrayOfValues = [[NSMutableArray alloc] init];
        weakSelf.ArrayOfDates = [[NSMutableArray alloc] init];
        weakSelf.ArrayOfTimes = [[NSMutableArray alloc] init];
        totalNumber = 0;
        OptimizeModelRealTimeModel *optimizeModelRealTimeModel = [[OptimizeModelRealTimeModel alloc] init];
        NSArray *temp = [NSArray arrayWithArray:realTimeModelArray];
        //如果获取的realTimeModelArray为空
        if (realTimeModelArray == nil) {
            [weakSelf.ArrayOfValues addObject:@"1.01"];
            [weakSelf.ArrayOfDates addObject:@"0"];
            [weakSelf.ArrayOfTimes addObject:@"0"];
            [weakSelf.ArrayOfValues addObject:@"1"];
            [weakSelf.ArrayOfDates addObject:@"1"];
            [weakSelf.ArrayOfTimes addObject:@"1"];
            
            totalNumber = 0;
        }
    
        for (int i = 0; i < temp.count; i++) {
            optimizeModelRealTimeModel = temp;
            [weakSelf.ArrayOfValues addObject:optimizeModelRealTimeModel.indexData];
            [weakSelf.ArrayOfDates addObject:optimizeModelRealTimeModel.cid];
            [weakSelf.ArrayOfTimes addObject:optimizeModelRealTimeModel.time];
            
            totalNumber = totalNumber + [[self.ArrayOfValues objectAtIndex:i] intValue];
        }
        [weakSelf.activityIndicatorView stopAnimating];
        [weakSelf loadData:temp];
    
    };
    
}

这是使用block传过来的值的代码
级别: 精灵王

状态: 连续签到 - [207天]
UID: 551166
精华: 0
发帖: 789
可可豆: 2043 CB
威望: 1569 点
在线时间: 556(时)
注册时间: 2016-03-17
最后登录: 2017-09-26
5 楼:  发表于: 2017-09-06 16:41    发自: Web Page
block为什么要用strong修饰,应该用copy修饰。

向天下所有的女司机道歉,我错了。
级别: 新手上路
UID: 518987
精华: 0
发帖: 76
可可豆: 76 CB
威望: 85 点
在线时间: 836(时)
注册时间: 2015-10-30
最后登录: 2017-09-26
6 楼:  发表于: 2017-09-06 18:21    发自: Web Page
回 5楼(end_cancel) 的帖子
ARC下strong和copy没区别,只是大家用copy习惯了
级别: 新手上路
UID: 622999
精华: 0
发帖: 1
可可豆: 1 CB
威望: 1 点
在线时间: 0(时)
注册时间: 2017-09-06
最后登录: 2017-09-11
7 楼:  发表于: 2017-09-06 20:48    发自: Web Page
弱指针与强引用的问题,方法不管在哪都要强引用
级别: 侠客
UID: 489723
精华: 0
发帖: 105
可可豆: 267 CB
威望: 267 点
在线时间: 126(时)
注册时间: 2015-07-17
最后登录: 2017-09-26
8 楼:  发表于: 2017-09-07 10:32    发自: Web Page
回 7楼(haokunjiang) 的帖子
     你的意思是   [weakSelf loadData:temp]; 要改成self吗?
级别: 新手上路
状态: 连续签到 - [1天]
UID: 221946
精华: 0
发帖: 35
可可豆: 39 CB
威望: 35 点
在线时间: 226(时)
注册时间: 2013-05-03
最后登录: 2017-09-26
9 楼:  发表于: 2017-09-07 14:47    发自: Web Page
for (int i = 0; i < temp.count; i++) {
            optimizeModelRealTimeModel = temp;
            [weakSelf.ArrayOfValues addObject:optimizeModelRealTimeModel.indexData];
            [weakSelf.ArrayOfDates addObject:optimizeModelRealTimeModel.cid];
            [weakSelf.ArrayOfTimes addObject:optimizeModelRealTimeModel.time];
            
            totalNumber = totalNumber + [[self.ArrayOfValues objectAtIndex:i] intValue];
        }

这是什么东西
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部