- 博客(29)
- 收藏
- 关注
转载 获取iOS设备唯一标识
在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理。我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊。 具体可以分为如下几种: 1、UUID 2、IDFA 3、IDFV 4、MAC 5、UUID下面我们来具体分析下每种获取方法的利弊1、UDID什么是UDID UDID 「Unique Device
2016-11-28 22:23:35
2680
转载 iOS中Cookie的使用
一. CookieCookie是在客户端存储服务器状态的一种机制,Web服务器可以通过Set-Cookie或者Set-Cookie2 HTTP头部设置Cookie。Cookie可以分为两类,会话Cookie和持久Cookie,会话Cookie是临时Cookie,当前会话结束(浏览器退出)时Cookie会被删除。持久Cookie会存储在用户的硬盘上,浏览器退出,然后重新启动后Cook
2016-10-21 14:49:26
2818
转载 堆排序原理及算法实现(最大堆)
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为
2016-09-07 22:05:13
498
转载 史上最全的iOS开源项目分类汇总
学了这么久,还是抽时间把github上比较好用的第三方总结了一下;Category/Util sstoolkit一套Category类型的库,附带很多自定义控件 功能不错~ BFKit又一套Category类型的 Kit,还有几个工具类
2016-09-04 15:01:05
3790
转载 GCD-信号量(dispatch_semaphore_t)
信号量在多线程开发中被广泛使用,当一个线程在进入一段关键代码之前,线程必须获取一个信号量,一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待前面的线程释放信号量。 信号量的具体做法是:当信号计数大于0时,每条进来的线程使计数减1,直到变为0,变为0后其他的线程将进不来,处于等待状态;执行完任务的线程释放信号,使计数加1,如此循环下去。
2016-08-29 00:18:03
2765
原创 MVVM开发模式
博客来源:https://git.oschina.net/DarkHorse1919/FunctionalReactiveProgrammingOniOS/blob/master/chapter6/what_is_mvvm.md什么是MVVM 在传统的MVC架构的应用中,你有三种组件:数据模型、视图以及试图控制器。数据模型保持你的数据,而视图用来呈现这些数据。控制器介
2016-08-23 22:45:04
1788
转载 iOS之NSNotificationCenter通知中心使用事项
一、了解几个相关的类 1、NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量。 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象。 @property (readonly, copy)NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息。 @
2016-08-23 22:38:45
1866
转载 CGBitmapContextCreate参数详解
函数原型:CGContextRef CGBitmapContextCreate ( void *data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSpaceRef colorspace, CGBitmapInfo b
2016-08-19 23:46:14
3082
转载 IOS 如何选择delegate、notification、KVO?
前面分别讲了delegate、notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在网上看到一个博客上详细的分析了三者之间的区别以及各自的优势,博文地址为http://blog.shinetech.com/2011/06/14/delegation-notification-and-obs
2016-08-17 23:54:25
348
原创 GCD的使用
1.什么是GCD GCD的全程是Crand Central Dispatch, 纯C语言的,提供了非常强大的函数API2.GCD的核心 核心是将任务添加到队列。 任务:执行什么操作 队列:用来存放任务任务 : 任务类型决定的是"执行"的方式 异步(dispatch_asy
2016-07-25 23:06:51
925
原创 Swift闭包循环引用
在swift中依然存在闭包循环引用的情况,和OC一样,在Block中self造成的循环引用并不是必然的,有时候也不会存在循环引用问题。在swift中循环引用的解决方法1.[weak self] 这种方式,self是可选项,如果self已经销毁,则为nil。2.[unowned self]这种方式,self不是可选项,如果self销毁了,则出现野指针访问。(unowned相当于assig
2016-07-25 23:01:27
542
原创 关于OC中的Block使用以及ARC和MAR下的内存管理方式
1.什么是Block? Block是属于C语言框架 Block是一种数据类型(类似int) Block是一段代码块,只有在被调用的时候被执行(类似函数和方法) Block可以定义成临时变量 Block可以定义成参数 Block可以定义成属性2.Block的语法结构 1.无参数
2016-07-25 15:19:28
1861
转载 UITableView修改索引的方法
默认的快速索引是不允许设置的,但是还是有些牛人找到了Apple隐藏的接口- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; //设置导航字体颜色、字体、背景色 for (UIView* subview in [self.tableView s
2016-07-22 00:54:42
1171
原创 图片拉伸的几种方式
第一种,使用代码+ (UIImage *)resizableWithName:(NSString *)imageName{ UIImage *image = [UIImage imageNamed:imageName]; /** * 1. 可以在图片资源里,选择show slicing进行设置拉伸图片
2016-06-27 22:27:29
1765
原创 九宫格算法
1.我们在做APP应用中经常需要去动态的排版九宫格列表的界面,所以我们需要了解九宫格的算法。 九宫格算法的核心思路: 列号计算:i % 列数 列号用来计算X 行号计算:i / 列数 行号用来计算Y每一个应用视图的X = 左边距 + (应用视图的宽 + 应用左右间距)* 列号 每一个应用视图的Y = 上边距 + (应用视图的高 + 应用上下间距)* 行号2.例子说明九宫格算法
2016-05-22 21:10:57
4317
原创 UIScrollView常见的使用方法
1.UIScrollView主要用来实现滚动和缩放的功能为什么需要使用UIScrollView?移动设备的屏幕是极其有限的,所以直接展示给用户的内容也是有限的,当展示的内容比较多的时候,用户通过滚动和缩放来查看更多的内容,普通的UIView是不能滚动的。UIScrollView是可以滚动的视图空间,能展示更多的内容,可以通过滚动查看更多的内容。2.UIScrollView 常用的三个主
2016-05-19 22:55:41
569
原创 OC正式协议和非正式协议
1.概念非正式协议,非正式协议是NSObject类(包括它的子类)的类别,其所有的子类都含蓄地接受了这个协议。非正式协议中的方法是否实现都是可选的,因此在调用非正式协议中的方法之前,需要去检查对象类是否实现了它。在Objective-C2.0中引入可选的正式协议方法之前,非正式协议是Foundation和AppKit类实现委托的唯一方式。非正式协议就是类别,即凡是NSObject或其子
2016-05-11 20:39:02
754
原创 cocoapods安装
1.remove现有的ruby默认源, 因为这个网址https://rubygems.org/国内不能访问。$gem sources --remove https://rubygems.org/2.使用taobao的源可以去访问,先加入$gem sources -a https://ruby.taobao.org/3.验证新源是否替换成功$g
2016-05-02 17:19:42
482
转载 Xcode命令使用大全
新建项目 com + shift +N新建文件 com + N偏好设置 通用 com + ,跳到指定行 com + L当前行加断点 com + \移动编辑区最上方 com + 上移动编辑区最下方 com + 下移动光标所在行最左边 com + 左移动光标所在最右边 com + 右向前/后跳一个单词
2016-04-24 19:10:21
2406
原创 Objective-C 内存管理
1.什么是内存管理?移动设备的内存是有限的,每个APP所占用的内存也是有限制的。当APP所占用的内存较多时,系统会发出内存警告,这个时候需要回收一些不再使用的内存空间,比如说一些不再使用的对象,变量等。注意:OC中需要内存管理的都是OC对象,基本数据类型不需要手动管理,系统自动管理。2.OC中内存管理方式每个OC对象都有自己的引用计数器,每个OC对象内部专门有4个字节的存储空间来存
2016-04-24 10:52:22
439
原创 Objective-C 关于NSString字符串相等
1.任何两个相同字符串值的声明,即使是存储在不同的变量名中,也是指向同一个对象// 以下方式都是在常量区,都是指向同一个地址 NSString *str1 = @"Hello world."; NSString *str2 = @"Hello world."; NSString *str3 = [NSString stringWit
2016-04-18 22:37:07
1524
原创 C语言-条件编译调试Bug
#include #define DEBUG1 1#if DEBUG1 == 1//显示调试信息 ##表示参数可以是0个,也可以多个#define Log(format,...) printf(format,## __VA_ARGS__)#else//不显示调试信息#define Log(format,...)#endifint main(int argc, const
2016-04-13 16:05:49
840
原创 C语言-二分查找(折半查找)算法
1.折半查找算法原理:取中间元素与查找元素进行比较,如果查找元素比中间元素大,则在中间元素右边查找,如果查找元素比中间元素小,则在中间元素的左边查找。代码例子:#include /** * 折半查找函数 * * @param arr 数组 * @param len 数组长度 * @param value 查找元素 * * @return 返回查找元素的
2016-04-03 21:42:41
38270
3
原创 C语言-冒泡,选择排序
1.冒泡算法简单定义:大数下沉,小数起泡代码实现:#include void funcScort(int arr[],int len){ for (int i = 0; i1; i++) { for(int j = 0 ;j1-i;j++ ){ if (arr[j]>arr[j+1]) { int temp;
2016-04-03 20:57:47
752
原创 C语言-交换两个变量的值
1.使用中间值temp int a = 5,b = 8; int tmp; tmp = a; a = b; b = tmp;输出结果:a=8,b=5 2.使用求和方式 int a = 5,b = 8; //不用中间值 a = a+b; b = a-b; a = a-b;输出结果:a=8,b=5 3.使用异或int main(int arg
2016-04-03 00:15:26
1277
原创 C语言-位运算
1.原码(8位二进制)+1的原码:0000 0001 第一位是符号位-1的原码:1000 00012.反码正数的反码就是原码,负数的反码是符号位不动,其他位按位取反。+1的反码:0000 0001-1的反码:1111 11103.补码正数的补码就是其本身,负数的补码就是原码的基础上,符号位不变,其余各位取反 (负数补码是其反码加一)+1的补码:0000
2016-04-03 00:06:27
628
原创 C语言基础
1.C语言中的关键字(32个)2.标识符的命名规则a. 只能由字母,数字,下划线或美元符号$组成b.不能以数字开头c.不能与关键字重名d.严格区分大小写3.标识符的命名规范1).起一个有意义的名字(提高代码的可读性)2).驼峰命名4.常量,表示一些固定的数据,这些数据不能改变5.常量分类:整型常量,实型常量,字符常量,字符串常量。特殊的字符常量(转义字符
2016-04-01 20:57:42
675
原创 C语言基础知识
1.mian函数是程序的入口,一个程序只能有一个main函数,需要一个int返回值。返回值int可以省略,默认为int,main()函数中可以不提供return#include void showMessage(){ printf("Hello,World\n");} main(int argc, const char * argv[]) { showMessage();
2016-04-01 10:54:51
720
原创 git向github上传完整项目
第一步:在ginhub网站上创建一个repository; 第二步:点击需要上传的本地工程目录,右击-->>Git Bash,进入命令行; 第三步: $ git init$ git add -all //添加该文件夹下的所有文件 $ git commit -m ‘这是一个示例’ //引号内是对仓库的描述 $ git remote add origin git@gi
2016-03-22 10:18:55
519
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人