第一篇

好吧,这里是第一篇个人博客。从小到大一直未玩过博客,今日受CZH君的启发,决定也玩玩博客。一是为了记录自己的学习轨迹,二也是算锻炼锻炼文笔,这对习惯少说多做的我来说,是一种全新的体验。

那么,今天来总结一下做了些什么吧。

阅读了CZH君的weather app,学到了一些以前忽略的东西。当然,也有自己对某些逻辑的见解,并在他的基础上进行了尝试。

直接说代码吧:

1.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{

[[DataBaseManager sharedDataBaseManager]insertForecastWeather:_forecastData];

});

[self showForecastData:_forecastData];

didGainForecastWeather=YES;

[self whetherCompleteRequest];

关于后台异步处理数据库操作,主线程更新UI,我认为不必用_sync(main_queue),会有deadlock的隐患。既然此处已经是在回调block中,数据库操作和UI操作没有先后关系,则直接调用内部方法即可。

2.

关于枚举值。

typedefNS_ENUM(NSUInteger, <#MyEnum#>) {

<#MyEnumValueA#>,

<#MyEnumValueB#>,

<#MyEnumValueC#>,

<#MyEnumValueD#>

};

用以分辨不同的状态码,从而避免一些重复代码。Don’t repeat yourself.枚举的使用是简化代码,理清逻辑的重要手段。

3.

复习之前看过的动画教程。说起来,这几天杂七杂八的事情,又没有继续动画方面的学习,不过也不太急,终归都是要学会的,只要坚持在做,一切都会慢慢来的。

CABasicAnimation* rotation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

rotation.toValue=@(2*M_PI);

rotation.duration=0.5;

rotation.cumulative=YES;

rotation.repeatCount=MAXFLOAT;

[_renewButton.layer addAnimation:rotation forKey:@"rotation"];

Layer的属性动画(留给以后勘误)。

这个动画效果还是不错的,应用于刷新按钮。

4.

_coordinateDic[@"lon"]]];

NSURLRequest* weatherRequest=[NSURLRequest requestWithURL:weatherURL];

NSURLSession* weatherSession=[NSURLSession sharedSession];

NSURLSessionDataTask* acquireWeatherData=[weatherSession dataTaskWithRequest:weatherRequest completionHandler:^(NSData* data,NSURLResponse* response,NSError* error) {

if(error==nil){

NSDictionary* weatherDic=[NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];

NSArray* weatherArr=[weatherDic objectForKey:@"list"];

self.gainForecastBlock(weatherArr);

}else{

NSLog(@"%@",[error localizedDescription]);

}

}];

[acquireWeatherData resume];

关于系统原生的URLSession使用。

5.

mantle YYModel 等ORM工具。可以极大的简化代码,减少构建模型的重复代码,但是记得要写明映射图,如:

+ (NSDictionary*)modelCustomPropertyMapper {

return@{@"publishDate":@"publish_date",

@"itemsCount":@"items_count",

@"issueID":@"issue_id"

};

}

+ (NSDictionary*)modelContainerPropertyGenericClass {

return@{

@"items":RecipeItem.class

};

}

对于有container的(字典,数据),要写明这些container中的元素的类是什么。运用YYModel不需要继承,而mantle需要。YYModel是以category的形式集成的,无侵入性。另外还有MJExtension。

好了,今天就写这么多把。以后会开启复习笔记的模式, 把evernote中的学习记录一个个过一遍,加深印象。另外,考试fighting!

你可能感兴趣的:(第一篇)