<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HONG321的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/HONG321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; HONG321]]></copyright><item><title><![CDATA[【Objective-C】Base64]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/75308983</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/75308983</guid><author>HONG321</author><pubDate>Tue, 18 Jul 2017 16:26:52 +0800</pubDate><description><![CDATA[base64算法能把任何二进制数据转换成文本文件， 二进制数据默认是按照8位一字节进行编码的，base64编码则是按照特定的字符表按照6位一分，最终得到的数值。每差一位，末位补两个0.对应字符表中的=号。所以base64编码比较容易辨认，如果文本最后面是等号，就有很大可能是base64编码。


简介



是网络上使用最广泛的编码系统，能够将任何二进制数据，转换成只有 65 个字符]]></description><category></category></item><item><title><![CDATA[【Objective-C】哈希算法（MD5）工具类]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/75308554</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/75308554</guid><author>HONG321</author><pubDate>Tue, 18 Jul 2017 16:13:39 +0800</pubDate><description><![CDATA[1、MD5算法是对任意一个二进制数据进行加密，可以得到定长的字符串结果。是一种单向加密。
  2、MD5是散列（哈希）算法的一种，加密结果是32个字符。SHA1加密结果是40个字符。Git版本穿越用的就是SHA1。
  3、对原文进行两次MD5的处理不安全，很容易就可以破解。（只要有足够多条的数据，就可以有很大可能被匹配出来，如www.cmd5.com）
  4、对数据进行加盐，两年前用的比]]></description><category></category></item><item><title><![CDATA[[Object-C]CGD&NSOperation]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/75042040</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/75042040</guid><author>HONG321</author><pubDate>Wed, 12 Jul 2017 22:48:52 +0800</pubDate><description><![CDATA[1、并发队列开多条线程，具体能开的线程数量由底层线程池决定。iOS7.0以及之前，GCD通常只会开启5-6条线程，iOS8.0之后，GCD能够开启非常多的线程（八十多条）。
2、如果任务没有先后执行顺序的要求，并且需要效率高，执行快，那么可以使用多线程。缺点是：费电，而且耗流量。适用于wifi或者包月的流量。
3、实际开发中，wifi线程数6条，3G
 / 4G 移动开发的时候，2~3条，再]]></description><category></category></item><item><title><![CDATA[[Object-c] Log(输出数组和字典的中文内容)]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/75041945</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/75041945</guid><author>HONG321</author><pubDate>Wed, 12 Jul 2017 22:39:43 +0800</pubDate><description><![CDATA[#import 

@interface NSArray (Log)

@end

@interface NSDictionary (Log)

@end



#import "NSArray+Log.h"

@implementation NSArray (Log)
//这个方法是专门针对国际化语言调试使用的，一旦实现，再输出数组，就会调用此方法。
//因为是调试使用的，只要实现分类方法，就会]]></description><category></category></item><item><title><![CDATA[Objective-C 的“多继承”]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/75041741</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/75041741</guid><author>HONG321</author><pubDate>Wed, 12 Jul 2017 22:15:32 +0800</pubDate><description><![CDATA[转载地址： http://blog.youkuaiyun.com/yiyaaixuexi/article/details/8970734




当单继承不够用，很难为问题域建模时，我们通常都会直接想到多继承。多继承是从多余一个直接基类派生类的能力，可以更加直接地为应用程序建模。但是Objective-C不支持多继承，由于消息机制名字查找发生在运行时而非编译时，很难解决多个基类可能导致的二义性问题。]]></description><category></category></item><item><title><![CDATA[【UI】自定义cell的步骤]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/46952145</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/46952145</guid><author>HONG321</author><pubDate>Sun, 19 Jul 2015 07:28:40 +0800</pubDate><description><![CDATA[一、自定义Cell的实现方式
1.1 使用xib自定义Cell
      当每个Cell中的内容是固定的，控件个数、位置、尺寸等都一样的时候可以使用xib的方式来自定义cell
1.2 通过手写代码的方式实现
      当每个Cell的结构不一样，每个Cell中的控件的个数、样式都不一样的时候使用手写代码的方式来自定义cell


二、xib方式实现自定义Cell的步骤

1]]></description><category></category></item><item><title><![CDATA[【Object-C】 NSTimer用法，暂停，继续，初始化]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/46919869</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/46919869</guid><author>HONG321</author><pubDate>Fri, 17 Jul 2015 00:28:38 +0800</pubDate><description><![CDATA[转载：

NSTimer的使用方法

1、初始化

+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

+ (NSTimer *)scheduledT]]></description><category></category></item><item><title><![CDATA[【ObjectC】oc中的内存分配]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/46485929</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/46485929</guid><author>HONG321</author><pubDate>Sat, 13 Jun 2015 22:59:38 +0800</pubDate><description><![CDATA[一、内存分配顺序
       程序一启动的时候就会先加载代码区中的代码，然后加载常量区中的常量，接着加载全局区和静态区（初始化过的静态区和没有初始化过的静态区是分开的），以上四个区都是随着程序启动而加载到内存中，随着程序的退出而销毁。程序员不需要管理这一块的内存。
       堆区：堆区用来存放对象，需要使用alloc来分配内存空间。程序员需要管理堆区的内存。ARC的内存管理，是Xcode]]></description><category></category></item><item><title><![CDATA[如何自定义button的点击有效区域]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/45897329</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/45897329</guid><author>HONG321</author><pubDate>Thu, 21 May 2015 21:44:09 +0800</pubDate><description><![CDATA[某些情况下我们需要按钮有不规则的形状，在这些形状内点击才有响应，例如下面的图片中：



图片中红线圈出的两处都是用按钮做的，按钮的实际布置是上面第二张图所画的那样，所有按钮都是矩形的，但是中间的按钮和一圈的转盘形状都不可能用矩形，否则点击的时候难免相互影响。




那么如何自定义按钮点击的有效区域呢，其实很简单，只要重写一个函数即可：




- (BOOL)poi]]></description><category></category></item><item><title><![CDATA[【ObjectC】Xcode的常用快捷键]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/45136493</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/45136493</guid><author>HONG321</author><pubDate>Mon, 20 Apr 2015 00:18:04 +0800</pubDate><description><![CDATA[1、撤消：Command+Z
2、撤消回复：Command+control+shift+Z
3、打开辅助视图：Option+cmd+Enter 
4、取消辅助视图：cmd+Enter
5、打开或者取消左边的导航栏：cmd+0
6、打开或者取消右边的属性视图：option + cmd+0]]></description><category></category></item><item><title><![CDATA[【Foundation】19-NSNumber、NSValue和NSDate]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/44001925</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/44001925</guid><author>HONG321</author><pubDate>Sun, 01 Mar 2015 12:05:43 +0800</pubDate><description><![CDATA[------Java培训、Android培训、iOS培训、.Net培训、期待与您交流！ -------

一、NSNumber
     1.1 NSNumber的作用：由于集合类型只能存放OC类型数据，无法存放int类型数据。当在开发中需要int类型的数据时，可以将int类型包装成NSNumber对象再存放。
     1.2 NSNumber和int的转换
    // 将数值10转]]></description><category></category></item><item><title><![CDATA[【Foundation】18-集合类NSArray、NSSet、NSDictionary]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43963905</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43963905</guid><author>HONG321</author><pubDate>Fri, 27 Feb 2015 07:30:38 +0800</pubDate><description><![CDATA[------Java培训、Android培训、iOS培训、.Net培训、期待与您交流！ -------

一、NSArray
1.1 NSArray是OC数组，是不可变数组。OC数组只能存放OC对象，不能存放非OC对象类型，比如int、struct、enum等。
1.2 NSString不能存放nil值。nil值是数组元素结束的标记。]]></description><category></category></item><item><title><![CDATA[【Foundation】17-字符串NSString和NSMutableString]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43957403</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43957403</guid><author>HONG321</author><pubDate>Thu, 26 Feb 2015 22:46:37 +0800</pubDate><description><![CDATA[一、NSString 
1.1 NSString是不可变字符串，即字符串的内容在内存中是不可变的。针对此字符串的操作（如拼接，删除等），都是拷贝字符串到新的字符串中进行操作，并返回新字符串。
1.2 字符串的创建
  NSString *s1 = @"jack";
  //NSString *s2 = [[NSString alloc] initWithString:@"jack"]; /]]></description><category></category></item><item><title><![CDATA[【Objective-C】15-block和协议]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43954547</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43954547</guid><author>HONG321</author><pubDate>Thu, 26 Feb 2015 16:40:33 +0800</pubDate><description><![CDATA[一、block
1.1  block的作用：block是苹果推荐的类型，效率高，可以在运行中保存 一段代码，并在任何时候执行。常用来封装和保存代码。
1.2  block和函数的相似性：（1）可以保存代码（2）有返回值（3）有形参（4）调用方式一样。
1.3 block的标识符是：^
1.4 定义block变量
void (^myblock)() = ^(){
// myblock是b]]></description><category></category></item><item><title><![CDATA[【Foundation】16-NSRange、NSPoint、NSSize、NSRect知识点]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43939769</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43939769</guid><author>HONG321</author><pubDate>Wed, 25 Feb 2015 19:51:17 +0800</pubDate><description><![CDATA[------Java培训、Android培训、iOS培训、.Net培训、期待与您交流！ -------

一、NSRange
1.1 NSRange本质是结构体，里面有location和length两个成员。
1.2 NSRange表示元素在数组中的范围，location表示起始元素的下标，length表示要包含的元素个数。
1.3 NSMakeRange函数可以用于创建NSRange对]]></description><category></category></item><item><title><![CDATA[【Objective-C】14-内存管理]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43707579</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43707579</guid><author>HONG321</author><pubDate>Tue, 10 Feb 2015 20:48:16 +0800</pubDate><description><![CDATA[------Java培训、Android培训、iOS培训、.Net培训、期待与您交流！ -------



一、内存管理的意义
移动设备的内存比较有限，每个app所能占用的内存也是有限制的，超出限制范围可能导致程序崩溃，需要合理分配内存。内存管理的对象是任何继承了NSObject的对象，对其他基本数据类型（int、double、float、char、struct、enum等）无效。这是]]></description><category></category></item><item><title><![CDATA[【Objective-C】13-类和方法的本质]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43642073</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43642073</guid><author>HONG321</author><pubDate>Sun, 08 Feb 2015 19:48:55 +0800</pubDate><description><![CDATA[------Java培训、Android培训、iOS培训、.Net培训、期待与您交流！ -------



一、类的本质
1.1 类的本质是对象，是Class类型的对象，简称类对象。
1.2 类的创建过程：Person *p = [[Person alloc] init];
     1>利用Class创建Person类对象；
     2>利用Person类对象，创建Perso]]></description><category></category></item><item><title><![CDATA[【Objective-C】12-分类]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43636309</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43636309</guid><author>HONG321</author><pubDate>Sun, 08 Feb 2015 12:48:12 +0800</pubDate><description><![CDATA[------Java培训、Android培训、iOS培训、.Net培训、期待与您交流！ -------



一、分类的作用
分类的英文名是Category，本身必须依赖于一个现有类，用于在不改变原来类的代码的基础上，为类扩充方法。使用分类，一个庞大的类可以分模块开发，可以由多个人来编写，更有利于团队合作。
二、类的声明和实现
2.1 分类的声明
@interface 类名 (分类]]></description><category></category></item><item><title><![CDATA[【Objective-C】11-构造方法]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43616177</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43616177</guid><author>HONG321</author><pubDate>Sat, 07 Feb 2015 23:38:49 +0800</pubDate><description><![CDATA[一、构造方法的作用：
	构造方法是用来初始化对象的方法，是个对象方法，-开头。构造方法只有一个作用，就是初始化成员变量。当一个对象初始化的时候需要有默认值，就可以用到构造方法。
二、构造方法的原则：
	成员变量属于哪个类，就在哪个类那里进行初始化。父类的属性交给父类方法去处理，子类方法处理子类自己的属性。]]></description><category></category></item><item><title><![CDATA[【Objective-C】10-@property和@synthesize]]></title><link>https://blog.youkuaiyun.com/HONG321/article/details/43601865</link><guid>https://blog.youkuaiyun.com/HONG321/article/details/43601865</guid><author>HONG321</author><pubDate>Sat, 07 Feb 2015 11:19:41 +0800</pubDate><description><![CDATA[------Java培训、Android培训、iOS培训、.Net培训、期待与您交流！ -------



一、@property和@synthesize的作用：
      由于在oc语法中对成员变量的完整访问都需要先在@interface和@end之间声明成员变量，然后再声明这个成员变量的get方法和set方法。并且在@implementation和@end之间实现这个成员变量的g]]></description><category></category></item></channel></rss>