<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IT_201607的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/IT_201607</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IT_201607]]></copyright><item><title><![CDATA[iOS加密方式（RSA签名加密、AES加密等）]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/76162551</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/76162551</guid><author>IT_201607</author><pubDate>Wed, 26 Jul 2017 19:25:01 +0800</pubDate><description><![CDATA[之前项目中采取的加密方式，只是对于重要的参数进行AES加密，再将各个参数拼接而成，通过MD5签名后形成最后一个参数。目前，改用了RSA签名的方式进行加密。AES加密主要针对于些重要的参数进行加密，如账号、密码等，具体代码实现可下Demo查看//AES加密
- (NSData *)AES128EncryptedDataWithKey:(NSString *)key iv:(NSString *)iv]]></description><category></category></item><item><title><![CDATA[iOS 字符中插入按钮（简单图文混排）]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/74322239</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/74322239</guid><author>IT_201607</author><pubDate>Tue, 04 Jul 2017 14:25:02 +0800</pubDate><description><![CDATA[需求字符串中某段区域需要添加点击效果或者字符串中添加可点击的按钮。 
解决：给UILabel添加点击事件的category。]]></description><category></category></item><item><title><![CDATA[Swift与OC的区别]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/73187677</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/73187677</guid><author>IT_201607</author><pubDate>Tue, 13 Jun 2017 16:06:32 +0800</pubDate><description><![CDATA[在Swift刚出来时就学习过，之后也一直没有用Swift写过项目，很快就忘记了，最近又花了点时间过了一遍官方的学习文档。Swift与OC的差异基础语法
声明使用let和var关键字，Swift可以推出出类型,let声明的常量不可修改，var声明变量。
Swift对数据要求严格，不存在隐式转换，强制转换格式：int(a)
使用整数类型的 min 和 max 属性来获取对应类型的最小值和最大值
BOOL]]></description><category></category></item><item><title><![CDATA[iOS gif加载视图]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/69542091</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/69542091</guid><author>IT_201607</author><pubDate>Fri, 07 Apr 2017 14:38:51 +0800</pubDate><description><![CDATA[gifLoadView 
一句话就可以为视图添加加载        let loadView = LWTGifLoadView(frame:self.view.frame, callback:{
            //网络请求
            print("重新请求")
        })
        self.view.addSubview(loadView)加载数据后再做处理]]></description><category></category></item><item><title><![CDATA[从零开始搭建iOS项目框架]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/68924461</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/68924461</guid><author>IT_201607</author><pubDate>Fri, 31 Mar 2017 14:03:05 +0800</pubDate><description><![CDATA[APP项目搭建上周个人刚搭建完的项目框架，在这分享一下，主要还是采用MVC设计模式，没有使用storyboard,纯代码搭的界面。1.新建工程1.1 新建项目 
* 删除无用的文件(Main.storyboard,ViewController) 
* 删除plist文件中Main storyboard file base name一项 
* appdelegate进行修改- (BOOL)applic]]></description><category></category></item><item><title><![CDATA[iOS缓存清理]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/66968283</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/66968283</guid><author>IT_201607</author><pubDate>Mon, 27 Mar 2017 09:50:52 +0800</pubDate><description><![CDATA[1.清除本地数据库中的数据2. 清除Caches目录下文件    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,YES);
    NSString *cachesDir = [paths objectAtIndex:0];
    NSFileManager* man]]></description><category></category></item><item><title><![CDATA[tableview 去除footer高度]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/64905225</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/64905225</guid><author>IT_201607</author><pubDate>Wed, 22 Mar 2017 10:04:13 +0800</pubDate><description><![CDATA[tableView Section头部停留在顶部当UITableView的style为Plain的时候，就会出现这种情况，解决办法就是创建的时候选择组的形式 _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.view.frame.size.height - 64)]]></description><category></category></item><item><title><![CDATA[swift 简单易用类似新闻客户端的结构]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/62229158</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/62229158</guid><author>IT_201607</author><pubDate>Wed, 15 Mar 2017 16:33:25 +0800</pubDate><description><![CDATA[一句话实现let segementVC = LWTSegementViewController()
//设置栏目的标题数组
segementVC.titleArray = ["社会","科技","娱乐","体育","美女","动物"]
//设置每个栏目的控制器数组
for (_, _) in segementVC.titleArray.enumerated() {
     let vc = Tes]]></description><category></category></item><item><title><![CDATA[swift学习笔记（22）- 高级运算符]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/61918670</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/61918670</guid><author>IT_201607</author><pubDate>Mon, 13 Mar 2017 15:28:06 +0800</pubDate><description><![CDATA[Swift 支持 C 语言中的全部位运算符。 
主要记下特殊的高级运算符溢出运算符在默认情况下，当向一个整数赋予超过它容量的值时，Swift 默认会报错，而不是生成一个无效的数。这个行为为我们在运算过大或着过小的数的时候提供了额外的安全性。例如，Int16 型整数能容纳的有符号整数范围是 -32768 到 32767，当为一个 Int16 型变量赋的值超过这个范围时，系统就会报错：var poten]]></description><category></category></item><item><title><![CDATA[swift学习笔记（21）- 访问控制]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/61916827</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/61916827</guid><author>IT_201607</author><pubDate>Mon, 13 Mar 2017 14:18:42 +0800</pubDate><description><![CDATA[模块和源文件Swift 中的访问控制模型基于模块和源文件这两个概念。模块指的是独立的代码单元，框架或应用程序会作为一个独立的模块来构建和发布。在 Swift 中，一个模块可以使用 import 关键字导入另外一个模块。在 Swift 中，Xcode 的每个目标（例如框架或应用程序）都被当作独立的模块处理。如果你是为了实现某个通用的功能，或者是为了封装一些常用方法而将代码打包成独立的框架，这个框架就是]]></description><category></category></item><item><title><![CDATA[swift学习笔记（20）- 泛型]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/61200012</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/61200012</guid><author>IT_201607</author><pubDate>Fri, 10 Mar 2017 16:43:46 +0800</pubDate><description><![CDATA[泛型函数泛型函数可以适用于任何类型，下面的 swapTwoValues(::) 函数是上面三个函数的泛型版本：func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
    let temporaryA = a
    a = b
    b = temporaryA
}swapTwoValues(::) 的函数主体和 swapTwoInts(::)]]></description><category></category></item><item><title><![CDATA[swift学习笔记（19）- 协议]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/60955556</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/60955556</guid><author>IT_201607</author><pubDate>Thu, 09 Mar 2017 10:23:02 +0800</pubDate><description><![CDATA[协议语法协议的定义方式与类、结构体和枚举的定义非常相似：protocol SomeProtocol {
    // 这里是协议的定义部分
}要让自定义类型遵循某个协议，在定义类型时，需要在类型名称后加上协议名称，中间以冒号（:）分隔。遵循多个协议时，各协议之间用逗号（,）分隔：struct SomeStructure: FirstProtocol, AnotherProtocol {
    //]]></description><category></category></item><item><title><![CDATA[MJRefresh实现动画下拉刷新]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/60876148</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/60876148</guid><author>IT_201607</author><pubDate>Wed, 08 Mar 2017 17:07:09 +0800</pubDate><description><![CDATA[项目中需要使用下拉的动画效果，MJ上的是图片在左，文字在右（而且没有样式选择），我们需要的是图片在上文字在下，我们只需要继承MJRefreshGifHeader，即可修改样式。 
-(void)prepare{
    [super prepare];    // 设置普通状态的动画图片
    NSMutableArray *idleImages = [NSMutableArray array];]]></description><category></category></item><item><title><![CDATA[swift学习笔记（18）- 扩展]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/60585070</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/60585070</guid><author>IT_201607</author><pubDate>Mon, 06 Mar 2017 18:12:52 +0800</pubDate><description><![CDATA[扩展作用
添加计算型属性和计算型类型属性
定义实例方法和类型方法
提供新的构造器
定义下标
定义和使用新的嵌套类型
使一个已有类型符合某个协议 
在 Swift中，你甚至可以对协议进行扩展，提供协议要求的实现，或者添加额外的功能，从而可以让符合协议的类型拥有这些功能。你可以从协议扩展获取更多的细节。  注意 
  扩展可以为一个类型添加新的功能，但是不能重写已有的功能。
扩展语法使用关键字 exte]]></description><category></category></item><item><title><![CDATA[swift学习笔记（17）- 类型转换]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/60580844</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/60580844</guid><author>IT_201607</author><pubDate>Mon, 06 Mar 2017 16:20:31 +0800</pubDate><description><![CDATA[定义一个类层次作为例子你可以将类型转换用在类和子类的层次结构上，检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。下面的三个代码段定义了一个类层次和一个包含了这些类实例的数组，作为类型转换的例子。class MediaItem {
    var name: String
    init(name: String) {
        self.name = name]]></description><category></category></item><item><title><![CDATA[iOS appIcon生成和设置]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/60340853</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/60340853</guid><author>IT_201607</author><pubDate>Sat, 04 Mar 2017 20:04:43 +0800</pubDate><description><![CDATA[使用asset catalog creator工具一键生成app的icon，美工出一张1024*1024的图片即可，不用再Xcode中一张张选择各类型的icon，方便很多 
使用方法 
直接将1024尺寸的图片拖到这上面即可，选择好你工程中images.xcassets文件夹的位置，选择iOS icon，最后点击Update Assets Catalog即可完成。 
生成之后你可以在工程中image]]></description><category></category></item><item><title><![CDATA[swift学习笔记（16）- 错误处理]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/60332890</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/60332890</guid><author>IT_201607</author><pubDate>Sat, 04 Mar 2017 17:01:43 +0800</pubDate><description><![CDATA[表示并抛出错误在 Swift 中，错误用符合Error协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。Swift 的枚举类型尤为适合构建一组相关的错误状态，枚举的关联值还可以提供错误状态的额外信息。例如，你可以这样表示在一个游戏中操作自动贩卖机时可能会出现的错误状态：enum VendingMachineError: Error {
    case invalidSelection]]></description><category></category></item><item><title><![CDATA[swift学习笔记（15）- 可选链]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/60147350</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/60147350</guid><author>IT_201607</author><pubDate>Fri, 03 Mar 2017 20:30:00 +0800</pubDate><description><![CDATA[使用可选链式调用代替强制展开通过在想调用的属性、方法、或下标的可选值后面放一个问号（?），可以定义一个可选链。这一点很像在可选值后面放一个叹号（!）来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败，然而强制展开将会触发运行时错误。为了反映可选链式调用可以在空值（nil）上调用的事实，不论这个调用的属性、方法及下标返回的值是不是可选值，它的返回结果都是一个可选值。你可以利用这]]></description><category></category></item><item><title><![CDATA[iOS日期选择器]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/59539779</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/59539779</guid><author>IT_201607</author><pubDate>Thu, 02 Mar 2017 16:24:39 +0800</pubDate><description><![CDATA[LWTDatePickerView简洁的日期选择器 
oc版本创建    LWTDatePickerView *pickerView = [[LWTDatePickerView alloc] initWithPickerViewWithCenterTitle:@"选择期限" LimitMaxIndex:50];滚动到特定日期    [pickerView pickerViewDidSelectRow]]></description><category></category></item><item><title><![CDATA[swift学习笔记（14）- 解决循环强引用]]></title><link>https://blog.youkuaiyun.com/IT_201607/article/details/56670363</link><guid>https://blog.youkuaiyun.com/IT_201607/article/details/56670363</guid><author>IT_201607</author><pubDate>Thu, 23 Feb 2017 13:49:16 +0800</pubDate><description><![CDATA[自动引用计数的工作机制当你每次创建一个类的新的实例的时候，ARC 会分配一块内存来储存该实例信息。内存中会包含实例的类型信息，以及这个实例所有相关的存储型属性的值。此外，当实例不再被使用时，ARC 释放实例所占用的内存，并让释放的内存能挪作他用。这确保了不再被使用的实例，不会一直占用内存空间。然而，当 ARC 收回和释放了正在被使用中的实例，该实例的属性和方法将不能再被访问和调用。实际上，如果你试图]]></description><category></category></item></channel></rss>