Tian'notes

Quick notes


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

iOS数据处理 - 转载·字符串MD5加密

发表于 2016-08-03   |   分类于 iOS   |  

MD5 即 Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。 其作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。

首先,创建桥接头文件 bridge.h 来包含需要引用的 Objective-C 头文件,并在项目中配置:

1
#import <CommonCrypto/CommonDigest.h>
阅读全文 »

iOS自定义控件 - 时间轴

发表于 2016-07-22   |   分类于 iOS   |  

时间轴是大家都很熟悉的特效,在网络上也有很多现成的资源,虽然轮子已经有很多,但是我们自己尝试来做一个也不失为是一种乐趣,下面我们通过 StoryBoard 和代码来完成一个时间轴的界面。

配置 StoryBoard:

首先我们创建新的 Project ,删掉默认的 ViewController.swift,和 MainStoryBoard 中的 ViewControlle r Scene ,现在我们就有了一个空的项目。

下面我们在 Main.StoryBoard 中拖进来一个 TableViewController 给它命名为 NoteTableViewController ,然后创建 New File - File ,选择 Cocoa Touch Class ,继承自 UITableViewController ,命名为 NoteTableViewController 。

然后将 NoteTableViewController 和 NoteTableViewController.Class 进行绑定,并给Main.StoryBoard 设置一个 Identity ,并勾选 Is Initial View Controller 。

下一步,选中 NoteTableViewController 下的 TableView ,将它的 Row Height 设置为60,Prototype Cells 设置为2。

下面,设置两个 Cell ,分别命名为 RightCell 和 LeftCell ,给每个 Cell 添加 3个Buttonh 和 1个UIView。3个按钮命名依次为:middle delete edit ,宽度30,高度30,并给按钮设置对应的背景图片,并让3个按钮对齐,UIView 的宽度是2,高度30,背景颜色为黑色。

给 LeftCell 添加一个Label,文本设置为右对齐,给 RightCell 添加一个 Label,文本设置为左对齐。

最后,勾选 delete edit 两个按钮的 Hidden 选项,然后创建 New File - File ,选择 Cocoa Touch Class ,继承自 UITableViewCell ,命名为 NoteTableViewCell 。

阅读全文 »

iOS多线程 - 线程间的通信

发表于 2016-07-21   |   分类于 iOS   |  

因为线程是串行的,这意味着如果我们要下载一个图片,使它呈现在一个UIImageView 里,那么这个线程必须要等待图片下载完成后,才能显示出来。为了解决这样的问题,我们需要用到多线程的技术,将下载图片交给子线程完成,将加载图片到 UIImageView 交给主线程,这就涉及到一个问题,就是线程之间的通信。

线程通讯的两种方式

  1. 从一个线程给另一个线程传递数据。
  2. 在一个线程中执行完特定任务后,转到另一个线程继续执行。

以上面的问题举例,我们要在一个线程中下载图片,然后要另一个线程展示图片,苹果官方推荐,刷新界面的操作最好在主线程中完成,那么我们来实验一下,如果将展示图片的操作交给子线程,会发生什么。首先我们创建一个 UIImageView 并将它添加到 UIViewController,然后我们创建一个子线程:

1
2
let subThread = NSThread(target: self, selector: #selector(ViewController.run(_:)), object: "我是传入参数")
subThread.start()
阅读全文 »

Xcode错误 - No Such Module

发表于 2016-07-21   |   分类于 Xcode错误   |  

No.1 首先确保工程中有这个库;

No.2 进入 Build Phases 找到 Link Binary With Libraries ,添加这个库;

No.3 点击 Build Phases 页面左上角加号,点击 New Copy Files Phase ,名字改为 Copy FrameWorks ,Destination 设置为 FrameWorks,将这个库添加进来即可。

iOS多线程 - 3种方式创建线程

发表于 2016-06-21   |   分类于 iOS   |  

首先来看这个方法:

1
public class func detachNewThreadSelector(selector: Selector, toTarget target: AnyObject, withObject argument: AnyObject?)

下面这个是常见的 init 创建线程:

1
public convenience init(target: AnyObject, selector: Selector, object argument: AnyObject?)

这两种创建方式有哪些不同呢?我们对比来看下:

init 是一个构造器,detachNewThreadSelector 是一个类型方法。detachNewThreadSelector 返回值是 void,也就是说没有返回值。detachNewThreadSelector 在调用后立即启动,不需要 start 方法。

阅读全文 »

iOS多线程 - GCD线程管理

发表于 2016-05-22   |   分类于 iOS   |  

GCD全称是 Grand Central Dispatch,它是基于 C 语言开发的一套多线程开发机制,也是目前苹果官方推荐的多线程开发方法。

GCD的优势

  1. GCD 是苹果公司为多核的并行运算提供的解决方案;
  2. GCD 会自动利用更多的CPU内核(比如双核、四核);
  3. GCD 会自动管理线程的生命周期(创建任务、调度任务、销毁任务);

因此,程序员只需要告诉 GCD 想要执行什么任务,把任务放在对应的 block 里面。不需要编写任何线程管理代码。

阅读全文 »

iOS多线程 - NSThread

发表于 2016-04-21   |   分类于 iOS   |  

首先介绍 NSThread 创建线程的方法:

1
public convenience init(target: AnyObject, selector: Selector, object argument: AnyObject?)

public class NSThread : NSObject 从这里可以看出,NSThread 是继承自 NSObject 的类,它的创建是一个构造器 init ,所以使用实例化对象的方式就可以调用了。

1
let thread = NSThread(target: <AnyObject>, selector: <Selector>, object: <AnyObject>)

现在我们来看一下,这个方法的几个参数,分别代表的含义。

形参名 形参类型 作用 方法填写
target AnyObject 当前类的一个对象。是selector消息发送的对象。 一般是 self
selector Selector 线程要执行的方法。只能接收一个参数。 创建方法传入
object AnyObject? selector线程函数的唯一传入值,可以是 nil 。 nil
阅读全文 »

iOS生命周期 - Main函数

发表于 2016-03-24   |   分类于 iOS   |  

所有基于C编写的app的入口都是main函数,但iOS应用程序有点不同。不同就是你不需要为iOS应用程序而自己编写main函数,当你使用Xcode创建工程的时候就已经提供了。除非一些特殊情况,否则你不应该修改Xcode提供的main函数实现,在下图中我们可以看到Xcode为我们生成了一个main.m文件:

ocmain.m

阅读全文 »

iOS多线程 - Pthread

发表于 2016-03-20   |   分类于 iOS   |  

1. 多线程的原理

线程是可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位。

共有堆,自有栈 , iOS 主线程栈和其他线程均默认为 512K。

堆可以理解为操作系统提供的一块内存,可以随意使用,在我们使用 new , alloc时,分配的内存就是系统用堆提供的。

栈是操作系统给当前的应用程序分配的,仅供当前应用程序使用的内存空间,也就是给我们的线程分配的内存空间,这个空间是有限制的,它主要是用来定义一些函数内部的成员变量,栈里的数据其他程序不能访问。

阅读全文 »

iOS网络编程 - NSURLConnection

发表于 2016-02-25   |   分类于 iOS   |  

阅读全文 »
1…456…9
Tian

Tian

不积跬步,无以至千里。
不积小流,无以成江海。

83 日志
17 分类
82 标签
RSS
GitHub Weibo
© 2017 Tian
由 Hexo 强力驱动
主题 - NexT.Pisces