<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liwuking的专栏]]></title><description><![CDATA[我爱IT, 我爱分享]]></description><link>https://blog.youkuaiyun.com/liwuking</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liwuking]]></copyright><item><title><![CDATA[GPUImage图片添加水印]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/79867078</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/79867078</guid><author>liwuking</author><pubDate>Mon, 09 Apr 2018 15:20:10 +0800</pubDate><description><![CDATA[    UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(100, 480, 120, 20)];
    lab.text = @&quot;滤镜信息&quot;;
    lab.font = [UIFont systemFontOfSize:20];
    lab.textColor = [UIColor redColor];
    lab.b...]]></description><category></category></item><item><title><![CDATA[ios中json解析出现的null问题]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/50596708</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/50596708</guid><author>liwuking</author><pubDate>Wed, 27 Jan 2016 21:15:20 +0800</pubDate><description><![CDATA[在iOS开发过程中经常需要与服务器进行数据通讯，Json就是一种常用的高效简洁的数据格式。


问题现象

但是几个项目下来一直遇到一个坑爹的问题，程序在获取某些数据之后莫名崩溃。其实很早就发现了原因：由于服务器的数据库中有些字段为空，然后以Json形式返回给客户端时就会出现这样的数据：



?





1




"somevalue":null
]]></description><category></category></item><item><title><![CDATA[Object-C代码规范]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/49471301</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/49471301</guid><author>liwuking</author><pubDate>Wed, 28 Oct 2015 16:56:14 +0800</pubDate><description><![CDATA[我们写出来的代码会给很多人看，为了使代码清晰简洁，方便阅读理解，都会统一遵从一定的代码规范，Objective-C同样如此。

    主要参考规范：

    1.Google
 Objective-C Style Guide

    2.Coding
 Guidelines for Cocoa

    简单总结一下目前接触到的：

    1.代码行度最大为100列]]></description><category></category></item><item><title><![CDATA[进程和线程的区别]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/46508959</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/46508959</guid><author>liwuking</author><pubDate>Mon, 15 Jun 2015 22:29:34 +0800</pubDate><description><![CDATA[简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 
线程的划分尺度小于进程，使得多线程程序的并发性高。
另外，进程在执行过程中拥有独立的内存单元，而多个线程共享内存，从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行，必须依存在应用程序中，由应用程序提供多个线程执行控制。
从逻]]></description><category></category></item><item><title><![CDATA[TCP和UDP的区别]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/46508883</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/46508883</guid><author>liwuking</author><pubDate>Mon, 15 Jun 2015 22:21:12 +0800</pubDate><description><![CDATA[TCP协议与UDP协议的区别
    首先咱们弄清楚，TCP协议和UCP协议与TCP/IP协议的联系，很多人犯糊涂了，一直都是说TCP/IP协议与UDP协议的区别，我觉得这是没有从本质上弄清楚网络通信！
TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议，因为TCP,IP协议是两个很重要的协议，就用他两命名了。
TCP/IP协议集包括应用层,]]></description><category></category></item><item><title><![CDATA[Extension]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/46428695</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/46428695</guid><author>liwuking</author><pubDate>Tue, 09 Jun 2015 16:49:16 +0800</pubDate><description><![CDATA[extension可以认为是匿名的category，但是这个extension相对于category有有一个特殊功能：

在extension中可以定义可写的属性，公有可读、私有可写的属性(Publicly-Readable, Privately-Writeable Properties)一般这样实现！




举例说明如下：

1. 创建测试程序empty applicatio]]></description><category></category></item><item><title><![CDATA[Category]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/46428517</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/46428517</guid><author>liwuking</author><pubDate>Tue, 09 Jun 2015 16:43:26 +0800</pubDate><description><![CDATA[二、category是什么


类别是一种为现有的类添加新方法的方式。

利用Objective-C的动态运行时分配机制，Category提供了一种比继承（inheritance）更为简洁的方法来对class进行扩展，无需创建对象类的子类就能为现有的类添加新方法






二、类别的局限性

有两方面局限性：

(1)无法向类中添加新的实例变量，类别没有位置容纳实]]></description><category></category></item><item><title><![CDATA[UITableView优化]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/46409605</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/46409605</guid><author>liwuking</author><pubDate>Mon, 08 Jun 2015 10:53:34 +0800</pubDate><description><![CDATA[看到一个很好的开源项目VVeboTableViewDemo，是关于如何优化UITableView的。加上正好最近也在优化项目中的类似朋友圈功能这块，思考了很多关于UITableView的优化技巧，相信这块是难点也是痛点，所以决定详细的整理下我对优化UITableView的理解。



UITableView作为iOS开发中最重要的控件之一，其中的实现原理很是考究。Apple在这块的优化水平]]></description><category></category></item><item><title><![CDATA[NSNotification的几点说明]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45972559</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45972559</guid><author>liwuking</author><pubDate>Mon, 25 May 2015 18:11:36 +0800</pubDate><description><![CDATA[原文地址：http://blog.youkuaiyun.com/wzzvictory/article/details/8489516



1、NSNotification消息的同步性
①NSNotification使用的是同步操作。即如果你在程序中的A位置post了一个NSNotification，在B位置注册了一个observer，通知发出后，必须等到B位置的通知回调执行完以后才能返回到A处继续]]></description><category></category></item><item><title><![CDATA[SQLite使用]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45953743</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45953743</guid><author>liwuking</author><pubDate>Sun, 24 May 2015 18:29:13 +0800</pubDate><description><![CDATA[SQLite是目前主流的嵌入式关系型数据库，其最主要的特点就是轻量级、跨平台，当前很多嵌入式操作系统都将其作为数据库首选。虽然SQLite是一款轻型数据库，但是其功能也绝不亚于很多大型关系数据库。学习数据库就要学习其相关的定义、操作、查询语言，也就是大家日常说得SQL语句。和其他数据库相比，SQLite中的SQL语法并没有太大的差别，因此这里对于SQL语句的内容不会过多赘述，大家可以参考SQLit]]></description><category></category></item><item><title><![CDATA[xib原理]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45938947</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45938947</guid><author>liwuking</author><pubDate>Sat, 23 May 2015 23:32:27 +0800</pubDate><description><![CDATA[原文出处：http://blog.youkuaiyun.com/xn4545945



用文本标记语言来进行布局，用的最多的应该是HTML语言。HTML可以理解为有一组特殊标记的XML语言。


一、iOS中xib与storyboard显示原理

在iOS中主要的布置界面的方式有3种：代码，xib，storyboard。
1. 代码
代码布置界面是万能的，但通常很复杂。布置一个简单的界]]></description><category></category></item><item><title><![CDATA[GCD使用01]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45938679</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45938679</guid><author>liwuking</author><pubDate>Sat, 23 May 2015 23:17:48 +0800</pubDate><description><![CDATA[介绍：
Grand Central Dispatch 简称（GCD）是苹果公司开发的技术，以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ，iOS 4及以上也可用。
设计：
GCD的工作原理是：让程序平行排队的特定任务，根据可用的处理资源，安排他们在任何可用的处理器核心上执行任务。
一个任务可]]></description><category></category></item><item><title><![CDATA[block内存管理]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45938033</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45938033</guid><author>liwuking</author><pubDate>Sat, 23 May 2015 22:24:56 +0800</pubDate><description><![CDATA[1，block引用局部变量
（1）局部变量在block中使用，引用计数会加1；
（2）若局部变量用__block修饰，则在block块中使用该变量引用计数不变


2，block引用全局变量
（1）全局变量在block里面使用，变量自身的引用计数不变，而当前属性所在的对象的引用计数会加1，使用__block修饰该属性，属性所在的对象的引用计数仍然加1；

Blocks

Blo]]></description><category></category></item><item><title><![CDATA[block的使用]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45937887</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45937887</guid><author>liwuking</author><pubDate>Sat, 23 May 2015 22:18:02 +0800</pubDate><description><![CDATA[著作权声明：本文由http://blog.youkuaiyun.com/totogo2010/原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢!
另外：http://blog.youkuaiyun.com/enuola/article/details/8674063


代码块本质上是和其他变量类似。不同的是，代码块存储的数据是一个函数体。使用代码块是，你可以像调用其他标准函数一样，传入参]]></description><category></category></item><item><title><![CDATA[KVC 与 KVO 理解]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45510665</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45510665</guid><author>liwuking</author><pubDate>Tue, 05 May 2015 23:04:09 +0800</pubDate><description><![CDATA[KVC
 与 KVO 理解










KVC 与 KVO 是 Objective C 的关键概念，个人认为必须理解的东西，下面是实例讲解。


Key-Value Coding (KVC)

KVC，即是指 NSKeyValueCoding，一个非正式的
 Protocol，提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一]]></description><category></category></item><item><title><![CDATA[隐藏、显示tabbar]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/45173757</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/45173757</guid><author>liwuking</author><pubDate>Tue, 21 Apr 2015 17:53:36 +0800</pubDate><description><![CDATA[//iOS7时，隐藏tabbar
    NSInteger count = self.navigationController.viewControllers.count;
    if (count == 1) {
        self.tabBarController.tabBar.hidden = NO;
    } else {
        if (UIDeviceSy]]></description><category></category></item><item><title><![CDATA[tableView 刷新单行]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/41728697</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/41728697</guid><author>liwuking</author><pubDate>Thu, 04 Dec 2014 19:17:44 +0800</pubDate><description><![CDATA[[tableView reloadData];可以将整个tableview的数据刷新，但有些时候我们可能只更改了某一行或多行的数据，不想全部重新来过，怎么办呢？

这就要用到下面这个方法了。

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)anim]]></description><category></category></item><item><title><![CDATA[设置UISegmentedControl的字体大小、颜色]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/41575331</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/41575331</guid><author>liwuking</author><pubDate>Fri, 28 Nov 2014 09:28:21 +0800</pubDate><description><![CDATA[NSDictionary *dic = [NSDictionarydictionaryWithObjectsAndKeys:[UIColorblackColor],UITextAttributeTextColor,
  [UIFontfontWithName:@"SnellRoundhand-Bold"size:14],UITextAttributeFont ,[UIColorwhiteColo]]></description><category></category></item><item><title><![CDATA[ios修改textField的placeholder的字体颜色、大小]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/41575311</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/41575311</guid><author>liwuking</author><pubDate>Fri, 28 Nov 2014 09:27:25 +0800</pubDate><description><![CDATA[/第一种   
   
 UIColor *color = [UIColor whiteColor];  
    _userName.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"用户名" attributes:@{NSForegroundColorAttributeName: color}];  ]]></description><category></category></item><item><title><![CDATA[【IOS开发基础】之判断NSString为纯数字]]></title><link>https://blog.youkuaiyun.com/liwuking/article/details/41575197</link><guid>https://blog.youkuaiyun.com/liwuking/article/details/41575197</guid><author>liwuking</author><pubDate>Fri, 28 Nov 2014 09:20:40 +0800</pubDate><description><![CDATA[//判断是否为整形：




- (BOOL)isPureInt:(NSString*)string{

    NSScanner* scan = [NSScanner scannerWithString:string];

    int val;

    return[scan scanInt:&val] && [scan isAtEnd];

}]]></description><category></category></item></channel></rss>