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

2013-08-12 22:53:56 +08:00
 tane05
概要:
先谢过各位走过路过的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友。
2909 次点击
所在节点    iDev
6 条回复
txx
2013-08-13 00:22:40 +08:00
弄个gist好咩 没高亮不幸福
alexrezit
2013-08-13 08:20:45 +08:00
刚接触 Objective-C 不要搞 AFNetworking 这样复杂的第三方库, 先从基础的来, 先把 getters 和 setters 理解了.
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
2013-08-13 09:12:42 +08:00
sorry,贴得有点乱!
tane05
2013-08-13 09:30:46 +08:00
@jamesxu 谢谢帮排版!
zhigang1992
2013-08-13 11:18:01 +08:00
看晕了,有些release,有些用完了又没有release。。。
还是用ARC把,何必和自己过不去呢?
而且在block里面最好来个weakSelf。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/78897

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX