自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (2)
  • 收藏
  • 关注

原创 part1:再论NSString属性的三观

最近在开发过程中看到了针对NSString属性的各种写法,包括我自己,痛定思痛,决定写一遍文章出来摆正三观。先说说我在项目中看到的对NSString属性的写法:1. @property(nonatomic,strong)NSString *tmpStr;  - (void)xxxFunc:(NSString *)str  {      //_tmpStr = str;

2016-09-07 11:40:04 355

原创 当前uistatusBar前景为白色,当增加uiwindow后,uistatusBar变为黑色的解决方法

问题:当程序的statusbar的字体颜色被navigationbar的背景色决定的时候,比如当navigationbar有背景色,则statusbar的字体颜色为白色,当没有navigationbar的时候,statusbar的字体颜色为黑色,但是当我们在statusbar为白色的时候,增加一个uiwindow,弹出再销毁后,发现statusbar字体颜色变为黑色,与我们设计的不符,如何解决

2016-01-13 15:59:57 1347

转载 iOS 27个库

DZNEmptyDataSet(UI,空表格视图解算器)PDTSimpleCalendar(UI,drop-in日历组件)MagicalRecord(实施活跃记录模式的Core Data助手)Chameleon(UI,色彩框架)Alamofire(Swift 网络)TextFieldEffects (UI,自定义外观的文本区域)GPUImage(快速图片处理)iRate(获取用户评价)GameCe

2015-07-24 08:55:36 664

转载 让XCode的 Stack Trace信息可读

让XCode的 Stack Trace信息可读昨天在写iOS代码的时候,调试的时候模拟器崩溃了。异常停在了如下整个main函数的入口处:1234567int main(int argc, char *argv[]){ @autoreleasepool { // 异常停在了下面这行,毫无提示作用

2015-07-23 19:45:02 615

转载 xcode开发中的小技巧

1.如何快速的查看一段代码的执行时间。#define TICK NSDate *startTime = [NSDate date]#define TOCK NSLog(@"Time: %f", -[startTime timeIntervalSinceNow])在想要查看执行时间的代码的地方进行这么处理TICK//do your work hereTOCK2.

2015-06-02 14:30:42 879

转载 正确使用Block避免Cycle Retain和Crash

正确使用Block避免Cycle Retain和CrashAPR 19TH, 2013Block简介Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事。需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block坑最多的地方,错误的内存管理 要么导致return cyc

2015-06-02 14:16:20 575

转载 为GCD队列绑定NSObject类型上下文数据-利用__bridge_retained(transfer)转移内存管理权

为GCD队列绑定NSObject类型上下文数据-利用__bridge_retained(transfer)转移内存管理权2015-5-28更新下面评论的好友“@Jim”给了种新的思路,就是在清除context的函数里面,用“_bridge_transfer”转换context,把context的内存管理权限重新交给ARC,这样,就不用显式调用“CFRelease”了。如下:

2015-06-02 11:56:03 853

转载 arc中的retain cycle

ARC中Retain Cycle揭秘发表于18小时前| 854次阅读| 来源Digital Leaves| 6 条评论| 作者Ignacio Nieto CarvajalARC移动开发iOSRetain Cycle内存管理解决方案开发经验摘要:对许多开发者而言,ARC最令人失望之处莫过于苹果公司让ARC来管理内存。不幸的是ARC没有循环引用检测器,因此很容易出现

2015-05-28 10:16:11 696

转载 gcd的同步异步

GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法。进程和线程的概念:正在进行中的程序被称为进程,负责程序运行的内存分配,每一个进程都有自己独立的虚拟内存空间。线程是进程中一个独立的执行路径,即主线程,主线程有1M的栈区,对于耗时的执行路径,可以放在子线程(512K栈区)中执行。Tip:

2015-05-27 18:13:51 6299

转载 @autoreleasepool-内存的分配和释放

@autoreleasepool-内存的分配与释放前言开发过iOS、Mac的朋友应该对“@autoreleasepool”不陌生。只要在Xcode里创建一个工程,就能看到下面这样的代码://iOS programint main(int argc, char * argv[]) { @autoreleasepool { return UIAppli

2015-05-27 16:45:08 1358

转载 NSTimer的详细总结

先说一下我的业务需求,最近在做一个小项目,需要用到定时器的功能,NSTimer类,期间,出现了一些小问题,不过最终通过自己的努力,终于做出来了。我想总结一下,我对NSTimer类的学习和理解。不多说了,先上效果图界面元素很简单,两个UIButton 开始和暂停,20表示起始倒计时。最终的效果是,按开始按钮的时候,倒计时开始运行,按暂停按钮的时候,计时器,停止倒计时。当倒

2015-05-07 18:54:31 528

转载 NSURLSession的工作流程

NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。注意,如果用户强制将程序关闭,NSURLSession会断掉。NSURLSession提供的功能:通过URL将数据下载到内存通过URL将数据下载到文件系统将数据上传到指定URL在后台完成上述

2015-05-07 09:35:51 513

转载 NSURLSession的未来

Cocoa网络框架的未来:NSURLSessionNSURLConnection大概有10年的历史了,很多api的设计都比较陈旧,否则AFNetworking不会这么火。好在苹果在iOS 7/Mavericks 引入了新的网络类NSURLSession,用以替代NSURLConnection。新的网络框架设计中,原有的NSURL/NSURLRequest/NSURLResp

2015-05-06 18:25:28 493

转载 ios动画

IOS中核心动画主要分4类:基础动画,关键帧动画,动画组,转场动画  CAAnimation:核心动画的基础类,不能直接使用,负责动画运行时间、速度的控制,本身实现了CAMediaTiming协议。CAPropertyAnimation:属性动画的基类(通过属性进行动画设置,注意是可动画属性),不能直接使用。CAAnimationGroup:动画组,

2015-05-06 14:09:43 482

转载 KVC & KVO

本文讲述了使用Cocoa框架中的KVC和KVO,实现观察者模式KVC键/值编码中的基本调用包括-valueForKey:和-setValue:forKey:。以字符串的形式向对象发送消息,这个字符串是我们关注的属性的关键。valueForKey:首先查找以键-key或-isKey命名的getter方法。如果不存在getter方法(假如我们没有通过@synthesize提供存取方法)

2015-05-06 11:44:53 760

转载 OC高级编程——深入block,如何捕获变量,如何存储在堆上

首先先看几道block相关的题目这是一篇比较长的 博文 ,前部分是block的测试题目,中间是block的语法、特性,block讲解block内部实现和block存储位置,请读者耐心阅读。 具备block基础的同学,直接调转到block的实现下面列出了五道题,看看能否答对两三个。主要涉及block栈上、还是堆上、怎么捕获变量。 答案在博文最后一行//-----------第一道

2015-05-05 22:11:58 1523

转载 initWithNibName与一般init的区别

init只是加载就行,有没有xib无所谓;但是initWithNibName需要xib文件,如果该文件不存在则报错:网上查看了一下,还有和loadNibNamed的区别和联系,暂时我也没用过这个loadNibNamed内容引用自:http://blog.sina.com.cn/s/blog_7b9d64af01018f2u.html

2015-04-30 10:34:09 763

转载 理解Objective-C的ARC

自动引用计数(Automatic Reference Counting, ARC)把压在程序员们肩头的管理内存的重担卸除了不少,更不用说让跟踪内存泄漏那样的烦心事也少了很多。不过,虽然ARC很棒,我们仍然不能完全把内存管理这回事儿抛在脑后。这篇文章将要讨论以下方面的问题,帮助大家快速进入ARC的世界。内存的引用计数: 快速复习ARC的工作原理在工程中开启ARCARC施加的新规则AR

2015-04-28 12:16:17 630

转载 UIResponse响应者链

这篇文章想跟大家分享的主旨是iOS捕获用户事件的各种情况,以及内部封装的一些特殊事件。我们先从UIButton谈起,UIButton大家使用的太多了,他特殊的地方就在于其内置的普通Default/高亮Highlighted/选择Selected/可用Enable的几个状态(UIControlState)。其次就是SDK内部已经为我们封装了以下用户事件:最常用的莫过于To

2015-04-28 11:43:40 2524 1

转载 iOS内存警告处理

1.    内存警告的说明在iOS6.0之后,不再支持viewWillUnload 和 viewDidUnload。但依然支持didReceiveMemoryWarning。之所以不支持viewWillUnload和 viewDidUnload,官方文档的解释是:当view不在window视图中时,系统会自动释放view中的耗内存的资源,view中剩余的资源所占内存极小,不值得系统

2015-04-28 11:24:54 3449

转载 Run Loop详细说明

Run loops是线程的基础架构部分。一个run loop就是一个事件处理循环,用来不停的调配工作以及处理输入事件。使用run loop的目的是使你的线程在有工作的时候工作,没有的时候休眠。Run loop的管理并不完全是自动的。你仍必须设计你的线程代码以在适当的时候启动run loop并正确响应输入事件。Cocoa和CoreFundation都提供了run loop对象方便配置和管理线

2015-04-28 10:45:10 859

转载 IOS内存管理

1.  内总管理原则(引用计数)    IOS的对象都继承于NSObject,   该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。       (一般情况下: 后面会讨论例外情况)    alloc      对象分配后引用计数为1    retain    对象的引用计数

2015-04-28 10:24:44 584

转载 iOS运行流程

1.先执行main函数,main内部会调用UIApplicationMain函数  2.UIApplicationMain函数里面做了什么事情:  1> 创建UIApplication对象  2> 创建UIApplication的delegate对象—–PYAppDelegate  3> 开启一个消息循环  每监听到对应的系统事件时,就会通知MJAppDel

2015-04-28 10:20:18 546

转载 delegate, notification和kvo模式实现通信的优缺点

在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信:        1.委托delegation;        2.通知中心Notification Center;        3.键值观察key value observing,KVO        

2015-04-28 09:21:50 584

转载 NSTimer说明

NSTimer  看到这个标题,你可能会想NSTimer不就是计时器吗,谁不会用,不就是一个能够定时的完成任务的东西吗?  我想说你知道NSTimer会retain你添加调用方法的对象吗?你知道NSTimer是要加到runloop中才会起作用吗?你知道NSTimer会并不是准确的按照你指定的时间触发的吗?你知道NSTimer就算添加到runloop了也不一定会按照你想象中的那样执行

2015-04-27 18:29:56 428

转载 AFNetworking和ASIHttpReust的对比

ASI和AFN以及底层框架的关系  对比ASIAFN更新状态2012年10月份,已经停止更新持续更新中,目前已更新至2.0版介绍ASI的直接操作对象ASIHTTPRequest,是一个实现了了NSCopying协议的NSOperation子类。在initialize和initWi

2015-04-27 11:48:25 566

转载 Objective-C的锁机制

NSLockiOS中对于资源抢占的问题可以使用同步锁NSLock来解决,使用时把需要加锁的代码(以后暂时称这段代码为”加锁代码“)放到NSLock的lock和unlock之间,一个线程A进入加锁代码之后由于已经加锁,另一个线程B就无法访问,只有等待前一个线程A执行完加锁代码后解锁,B线程才能访问加锁代码。需要注意的是lock和unlock之间的”加锁代码“应该是抢占资源的读取和修改代码,不

2015-04-27 11:30:05 2591

转载 Objective-C 线程开发总结

NSThread, NSOperation, GCD1>无论使用哪种方法进行多线程开发,每个线程启动后并不一定立即执行相应的操作,具体什么时候由系统调度(CPU空闲时就会执行)。2>更新UI应该在主线程(UI线程)中进行,并且推荐使用同步调用,常用的方法如下:- (void)performSelectorOnMainThread:(SEL)aSelector withObj

2015-04-27 11:22:57 1876

转载 @synchronized()说明

@synchronized(self) {    //something like this    // codes}        一、当两个并发线程访问同一个对象object中的这个synchronized(self)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。  二、当

2015-04-27 11:08:50 612

转载 Swift 的元组介绍

元组的定义元组是Objective-C中没有的数据类型,与数组类似,都是表示一组数据的集合,但与数组不同,它的特点是:元组的长度任意元组中的数据可以是不同的数据类型元组的定义很简单,用小括号括起来,然后以逗号隔开就可以了,如:var userInfo = ("Bannings" ,true, 22)  读取元组中的数据

2014-12-16 10:45:23 562

转载 关于(void)(&min1 == &min2)的问题和宏define min(a, b)

宏定义:#define min(x, y)                                 /({                                                /    typeof(x) _min1 = (x);                        /    typeof(y) _min2 = (y);

2012-04-01 12:20:56 1200

转载 hlist哈系链表

内核中,使用list_head作为链表,该数据结构本身即使head又是node。如果将它作为hash list的头节点,那么每个头节点会占用8个字节。因此内核中对其优化,使用hlist_head作为hash表的头节点。内核中定义其数据结构为:struct hlist_head { struct hlist_node *first; };struct hlist_node {

2012-03-31 13:25:09 658

转载 #define f(a, b) a##b

表示L与x连接。以下来自网络:#define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #xx##y表示什么?表示x连接y,举例说:int n = Conn(123,456); 结果就是n=123456;char* str = Conn("asdf", "adf")结果就是 str = "asd

2012-03-30 15:35:19 5235

转载 linux核list_for_each_entry(pos, head, member)分析

这里大概叙述了typeof是一个什么东西,怎么用,实际上可以用简单的话来重述。如果你对sizeof很熟悉的话,那么大可进行类推,sizeof(exp.)返回的是exp.的数据类型大小,那么typeof(exp.)返回的就是exp.的 数据类型。值得注意的是在上面的话里我们可以看到,如果编译选项中指定了使用标准C,那么gcc的扩展使用可能会受到影响,不过在gcc编译条件下使用 __typeof_

2012-03-30 15:34:35 1466

原创 输入整数的字符串,输出相应的整数

题目:  输入整数的字符串,输出相应的整数解法要点:1. 判断字符串整数的正负号2. 如遇到整数字符串中有别的符号,则输出03. 输入的字符串可能大于int类型的范围,考虑正溢出和负溢出4. 在字符串中单个字符变为整数则要减去'0'5. 判断输入的字符串指针的有效性注意:csdn上关于该题没有判断负溢出的情况代码如下:int prin

2012-02-24 15:10:39 1660

原创 从上往下打印树节点

题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。  例如输入  8  / \ 6 10/ \ / \5 7 9 11 输出8 6 10 5 7 9 11。解法1: 采用 STL 的map,从上到下保存节点地址即可。解法2:采用 STL 的 FIFO 的queue, 保存节点打印即可。解法2代码:vo

2012-02-19 21:24:01 516

转载 求1+2+...+n

题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。解法: 采取模版元编程即可。代码:template struct binary{static int const value = binary::value + N;};templatest

2012-02-19 21:21:06 416

转载 输入一个已经按升序排序过的数组和一个数字

题目:在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。解法: 建立2个索引,一个指向头,一个指向尾,头尾相加跟sum判断,小于sum的尾部减一,大于sum的头部加一即可。代码:void f

2012-02-19 21:18:56 604

原创 求二叉树中节点的最大距离

如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。思路:运用递归算法即可,void maxedge(BSTree root, int& icount, int& maxnum){if (root == NULL)return;++ico

2012-02-10 13:58:12 440

原创 翻转句子中单词的顺序。

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。解法:此题比较简单void revertChar(char *a){int len = strlen(a);int j = len;for

2012-02-10 13:33:20 426

unix网络编程卷1和卷2源代码

unix网络编程卷1和卷2的源代码, 很好的资源,放心下载

2009-10-25

自作HelloDDK驱动及测试程序

自作NT式HelloDDK驱动程序和测试程序。

2009-08-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除