<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Shicuf的专栏]]></title><description><![CDATA[兵贵神速！]]></description><link>https://blog.youkuaiyun.com/codeblshi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; codeblshi]]></copyright><item><title><![CDATA[iOS 之Quartz2D简介]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43703243</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43703243</guid><author>codeblshi</author><pubDate>Tue, 10 Feb 2015 14:59:29 +0800</pubDate><description><![CDATA[Quartz 2D编程指南是论坛会员德鲁伊翻译的国外的Quartz 2D一系列学习资料，供大家参考

Quartz 2D是一个二维图形绘制引擎，支持iOS环境和Mac OS X环境。我们可以使用Quartz 2D API来实现许多功能，如基本路径的绘制、透明度、描影、绘制阴影、透明层、颜色管理、反锯齿、PDF文档生成和PDF元数据访问。在需要的时候，Quartz
 2D还可以借助图形硬件的功]]></description><category></category></item><item><title><![CDATA[iOS 之UITapGestureRecognizer活学活用]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43675287</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43675287</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 20:30:26 +0800</pubDate><description><![CDATA[一、从零开始创建项目

1.为了大家方便理解，我们从一个空项目开始创建




2.项目的配置情况如下，可以根据自己随意调整




3. 因为我们创建的是新项目，除了一个ILAppDelegate什么都没有




4.正常情况下我们会创建一个根RootViewController,然后通过Controller控制视图的显示逻辑，这里只是一个练习，我们尝试一下新]]></description><category></category></item><item><title><![CDATA[iOS 之通过反射机制获得变量名]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43675257</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43675257</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 20:27:57 +0800</pubDate><description><![CDATA[一、使用介绍




    项目有的时候，会遇到一些特殊的处理，想要根据一个实例的引用，获取这个实例在代码中的名称。比如在处理View的坐标的时候，我们将UIView的坐标信息配置到plist文件中，我们可以设置一个key,再通过这个key来获取配置文件中的坐标等信息。有没有更简单的方法呢，或者我只想简单的用实例变量的变量名做为key。下面就介绍一种简单的，根据实例变量的引用获取实例变]]></description><category></category></item><item><title><![CDATA[iOS 之AutoReleasePool陷阱]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43675111</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43675111</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 20:22:05 +0800</pubDate><description><![CDATA[一、项目需求

在实际项目中，用户在上传图片时，有时会一次性上传大量的图片。在上传图片前，我们要进行一系列操作，比如：旋转图片为正确方向，压缩图片等，这些操作需要将图片加载到内存中，下面对内存的使用做详细分析.




二、内存分析，非优化

我在测试项目中，重复加载了一张图片1000次，首先加载图片到内存，然后进行压缩操作，释放内存

 



[cpp] view]]></description><category></category></item><item><title><![CDATA[iOS 之公共wifi解决方案]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43674969</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43674969</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 20:14:32 +0800</pubDate><description><![CDATA[一、公共WIFI综述

现在很多公司都在做免费WIFI，车站、公交、地铁、餐厅，只要是人员密集流动的地方就有WIFI，免费WIFI从最初的网页认证方式也逐渐向客户端认证方式偏移。本文主要讨论IOS认证上网的解决方案。 
IOS端WIFI应用的相关开发，主要存在以下问题
1.IOS系统WIFI相关的接口很少，大部分接口都是私有接口
2.在设备连接上WIFI，没有通过路由器认证前，如果关闭IO]]></description><category></category></item><item><title><![CDATA[OC之集合]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43669573</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43669573</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 12:45:11 +0800</pubDate><description><![CDATA[一、NSArray和NSMutableArray

（一）NSArray不可变数组

（1）NSArray的基本介绍

NSArray是OC中使用的数组，是面向对象的，以面向对象的形式操纵对象，是不可变数组。

C语言数组有一个缺点即数组中只能存放同种数据类型的元素。

OC数组只能存放OC对象，不能存放非OC对象，如int，结构体和枚举等。

（2）NSArray的创建]]></description><category></category></item><item><title><![CDATA[OC之字符串]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43669565</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43669565</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 12:44:00 +0800</pubDate><description><![CDATA[一、Foundation框架中一些常用的类

字符串型：

NSString：不可变字符串

NSMutableString:可变字符串

集合型：

1）

NSArray：OC不可变数组

NSMutableArray：可变数组

2）

NSSet：

NSMutableSet：

3）

NSDictiorary

NSMutableDi]]></description><category></category></item><item><title><![CDATA[OC之常用结构体]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43669547</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43669547</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 12:39:39 +0800</pubDate><description><![CDATA[一、基本知识

Foundation—基础框架。框架中包含了很多开发中常用的数据类型，如结构体，枚举，类等，是其他ios框架的基础。

如果要想使用foundation框架中的数据类型，那么包含它的主头文件就可以了。

即#import

补充：core foundation框架相对底层，里面的代码几乎都是c语言的，而foundation中是OC的。

 

二、常用的结构]]></description><category></category></item><item><title><![CDATA[OC之Block]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43657199</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43657199</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:57:27 +0800</pubDate><description><![CDATA[一、BOLCK

（一）简介

BLOCK是什么？苹果推荐的类型，效率高，在运行中保存代码。用来封装和保存代码，有点像函数，BLOCK可以在任何时候执行。

BOLCK和函数的相似性：（1）可以保存代码（2）有返回值（3）有形参（4）调用方式一样。

标识符 ^





（二）基本使用

（1）定义BLOCK变量

Int (^SumBlock)(int,in]]></description><category></category></item><item><title><![CDATA[OC之类描述和选择子]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43657087</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43657087</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:56:01 +0800</pubDate><description><![CDATA[一、description方法

Description方法包括类方法和对象方法。（NSObject类所包含）

（一）基本知识

-description（对象方法）

使用NSLog和@%输出某个对象时，会调用对象的description方法，并拿到返回值进行输出。

+description（类方法）

使用NSLog和@%输出某个对象时，会调用类对象的descrip]]></description><category></category></item><item><title><![CDATA[OC之分类]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43656965</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43656965</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:54:17 +0800</pubDate><description><![CDATA[一、分类

（一）分类的基本知识 

概念：Category  分类是OC特有的语言，依赖于类。

分类的作用：在不改变原来的类内容的基础上，为类增加一些方法。

添加一个分类：





文件结构图：

 

在分类中添加一个方法

 

Study方法的实现

 

测试程序：

 

（二）分类的使用注意

（1）分类只能增加方]]></description><category></category></item><item><title><![CDATA[OC之构造方法]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43656635</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43656635</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:51:52 +0800</pubDate><description><![CDATA[一、构造方法

（一）构造方法的调用

完整的创建一个可用的对象：Person *p=[Person new];

New方法的内部会分别调用两个方法来完成2件事情，1）使用alloc方法来分配存储空间（返回分配的对象）；2）使用init方法来对对象进行初始化。

可以把new方法拆开如下：

1.调用类方法+alloc分配存储空间，返回未经初始化的对象

Person *]]></description><category></category></item><item><title><![CDATA[OC之属性]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43656461</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43656461</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:50:21 +0800</pubDate><description><![CDATA[一、@property @synthesize关键字

注意：这两个关键字是编译器特性，让xcode可以自动生成getter和setter的声明和实现。

（一）@property 关键字

@property 关键字可以自动生成某个成员变量的setter和getter方法的声明

@property int age;

编译时遇到这一行，则自动扩展成下面两句：

- (v]]></description><category></category></item><item><title><![CDATA[OC之语法]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43656233</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43656233</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:47:56 +0800</pubDate><description><![CDATA[一、点语法

（一）认识点语法

声明一个Person类:


 1 #import 
 2 
 3 @interface Person : NSObject
 4 {
 5     int _age;//默认为@protected
 6 }
 7 
 8 - (void)setAge:(int)age;
 9 - (int)age;
10 
11 @end



　　　　P]]></description><category></category></item><item><title><![CDATA[OC之多态]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43655791</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43655791</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:45:55 +0800</pubDate><description><![CDATA[一、基本概念
多态在代码中的体现，即为多种形态，必须要有继承，没有继承就没有多态。
在使用多态是，会进行动态检测，以调用真实的对象方法。
多态在代码中的体现即父类指针指向子类对象。
Animal类的声明
 
Animal类的实现
 
Dog类继承自Animal类
 
Dog类的实现
 
测试程序：
 
 
二、使用注意
代码分析：
Dog *d=[[Animal ]]></description><category></category></item><item><title><![CDATA[OC之继承]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43655505</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43655505</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:44:47 +0800</pubDate><description><![CDATA[一、基本概念

程序的世界和人类的“对象”世界在思想上是没有设么区别的，富二代继承了父母，自然就拥有了父母拥有的所有资源，子类继承了父类同样就拥有了父类所有的方法和属性（成员变量）。



 在这里动物是猫类和狗类的父类，黑猫和白猫类是猫类的子类。

继承的好处：

（1）抽取出了重复的代码

（2）建立了类和类之间的联系

继承的缺点：

耦合性太强

 
]]></description><category></category></item><item><title><![CDATA[OC之封装]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43655403</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43655403</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:43:56 +0800</pubDate><description><![CDATA[一、面向对象和封装
面向对象的三大特性：封装（成员变量）、继承和多态
在OC语言中，使用@interface和@implementation来处理类。
 
@interface就好像暴露在外面的时钟表面，像外界提供展示以及接口。@implementation就好像隐藏在时钟内部的构造实现，把具体的实现封装了起来。
 
二、Set方法
在开发过程中，考虑到安全性要求，我们一般不在成员变]]></description><category></category></item><item><title><![CDATA[OC之内存管理]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43654917</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43654917</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:40:23 +0800</pubDate><description><![CDATA[一、基本原理

（一）为什么要进行内存管理。

由于移动设备的内存极其有限，所以每个APP所占的内存也是有限制的，当app所占用的内存较多时，系统就会发出内存警告，这时需要回收一些不需要再继续使用的内存空间，比如回收一些不再使用的对象和变量等。

管理范围：任何继承NSObject的对象，对其他的基本数据类型无效。

本质原因是因为对象和其他数据类型在系统中的存储空间不一样，其它局]]></description><category></category></item><item><title><![CDATA[OC之方法介绍]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43654571</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43654571</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:36:24 +0800</pubDate><description><![CDATA[一、OC方法

（一）对象方法

（1）对象方法以-开头如 -（void）xx;

（2）对象方法只能由对象来调用

（3）对象方法中可以访问当前对象的成员变量

（4）调用格式   [对象名  对象方法名]；

（5）设计一个学生类和狗类，练习对象方法的使用。

学生类的声明：

 

学生类的实现：

 

狗类的声明：

 

狗类的实现：]]></description><category></category></item><item><title><![CDATA[OC之基础简介]]></title><link>https://blog.youkuaiyun.com/codeblshi/article/details/43654381</link><guid>https://blog.youkuaiyun.com/codeblshi/article/details/43654381</guid><author>codeblshi</author><pubDate>Mon, 09 Feb 2015 00:34:22 +0800</pubDate><description><![CDATA[一、面向对象
OC语言是面向对象的，c语言是面向过程的，面向对象和面向过程只是解决问题的两种思考方式，面向过程关注的是解决问题涉及的步骤，面向对象关注的是设计能够实现解决问题所需功能的类。
术语：OO面向对象、OOP面向对象编程
 
二、类
（一）关于类
类的设计只关注三个东西：类名、属性和方法
注意：一般名词都是类，拥有相同属性和行为的对象都可以抽象为一个类，类名是标识符的一种，需]]></description><category></category></item></channel></rss>