V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
tane05
V2EX  ›  iDev

大家来找茬,眼神交流找bug

  •  
  •   tane05 · 2013-08-12 22:53:56 +08:00 · 2928 次点击
    这是一个创建于 4155 天前的主题,其中的信息可能已经有所发展或是发生改变。
    概要:
    先谢过各位走过路过的V友。本人模仿AFNetWorking的Demo写了非ARC的Demo,结果有内存bug,以下为主要代码,忘大神们点拨下。

    rootVC.h中申明
    @property (copy, nonatomic) NSMutableArray *dataSource;

    rootVC.h中请求数据
    - (void)requestJsonData
    {
    // NSString *therUrl = [NSString stringWithFormat:@"%@GetTestInfo.php",BaseURLString];
    NSURL *url = [NSURL URLWithString:BaseURLString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

    NSDictionary *tmpDic= (NSDictionary *)JSON;
    NSDictionary *dic =[tmpDic valueForKey:@"data"];
    NSArray *wetherArray = [dic valueForKey:@"weather"];
    NSMutableArray *dataSourceArray = [NSMutableArray arrayWithCapacity:[wetherArray count]];
    for (NSDictionary *item in wetherArray) {
    RootViewCellModel *metaData = [[RootViewCellModel alloc] initWithAttributes:item];
    [dataSourceArray addObject:metaData];
    [metaData release];
    }
    self.dataSource = dataSourceArray;
    [self.tableView reloadData];

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
    NSString *errorInfo = [NSString stringWithFormat:@"%@",error];
    NSLog(@"%@",error);

    UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"
    message:[NSString stringWithFormat:@"%@",error]
    delegate:nil
    cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [av show];
    }];
    [operation start];
    }


    metaData.h 中声明
    @interface metaData : NSObject
    @property (nonatomic, copy) NSString *projectName;
    @property (nonatomic, copy) NSString *addDec;
    @property (nonatomic, copy) NSString *price;
    @property (nonatomic, copy) NSString *tel;
    @property (nonatomic, copy) NSString *imageURLString;
    - (id)initWithAttributes:(NSDictionary *)attributes;
    @end

    重点来了
    metaData.m实现
    @implementation RootViewCellModel
    - (void)dealloc
    {
    [_projectName release];
    [_addDec release];
    [_price release];
    [_tel release];
    [_imageURLString release];
    [super dealloc];
    }

    - (id)initWithAttributes:(NSDictionary *)attributes {
    self = [super init];
    if (self) {

    NSString *tmp= nil;
    tmp = [attributes valueForKey:@"date"];
    NSLog(@"tmp retainCount %d",[tmp retainCount]);
    _projectName = [NSString stringWithString:tmp];
    NSLog(@"tmp retainCount %d",[tmp retainCount]);

    tmp = [attributes valueForKey:@"precipMM"];
    _addDec = [NSString stringWithString:tmp];
    tmp = [attributes valueForKey:@"tempMaxC"];
    _price = [NSString stringWithString:tmp];
    tmp = [attributes valueForKey:@"weatherCode"];
    _tel = [NSString stringWithString:tmp];
    }
    return self;
    }
    @end

    可能代码有点多,再次感谢看完的V友。
    第 1 条附言  ·  2013-08-13 11:15:30 +08:00
    代码已挂上,有空的哥们指点下。https://github.com/Ezrohir/AFNetWorkingBugDemo
    6 条回复    1970-01-01 08:00:00 +08:00
    txx
        1
    txx  
       2013-08-13 00:22:40 +08:00   ❤️ 1
    弄个gist好咩 没高亮不幸福
    alexrezit
        2
    alexrezit  
       2013-08-13 08:20:45 +08:00   ❤️ 1
    刚接触 Objective-C 不要搞 AFNetworking 这样复杂的第三方库, 先从基础的来, 先把 getters 和 setters 理解了.
    jamesxu
        3
    jamesxu  
       2013-08-13 09:11:30 +08:00
    rootVC.h:
    <script src="https://gist.github.com/anonymous/6216927.js"></script>
    metaData.h:
    <script src="https://gist.github.com/anonymous/6216903.js"></script>
    metaData.m:
    <script src="https://gist.github.com/anonymous/6216915.js"></script>
    jamesxu
        4
    jamesxu  
       2013-08-13 09:12:42 +08:00   ❤️ 1
    sorry,贴得有点乱!
    tane05
        5
    tane05  
    OP
       2013-08-13 09:30:46 +08:00
    @jamesxu 谢谢帮排版!
    zhigang1992
        6
    zhigang1992  
       2013-08-13 11:18:01 +08:00
    看晕了,有些release,有些用完了又没有release。。。
    还是用ARC把,何必和自己过不去呢?
    而且在block里面最好来个weakSelf。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2167 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:12 · PVG 00:12 · LAX 08:12 · JFK 11:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.