
Objective-C
文章平均质量分 54
Roger_Jin
这个作者很懒,什么都没留下…
展开
-
Objective-C的锁机制
NSLockiOS中对于资源抢占的问题可以使用同步锁NSLock来解决,使用时把需要加锁的代码(以后暂时称这段代码为”加锁代码“)放到NSLock的lock和unlock之间,一个线程A进入加锁代码之后由于已经加锁,另一个线程B就无法访问,只有等待前一个线程A执行完加锁代码后解锁,B线程才能访问加锁代码。需要注意的是lock和unlock之间的”加锁代码“应该是抢占资源的读取和修改代码,不转载 2015-04-27 11:30:05 · 2742 阅读 · 0 评论 -
KVC & KVO
本文讲述了使用Cocoa框架中的KVC和KVO,实现观察者模式KVC键/值编码中的基本调用包括-valueForKey:和-setValue:forKey:。以字符串的形式向对象发送消息,这个字符串是我们关注的属性的关键。valueForKey:首先查找以键-key或-isKey命名的getter方法。如果不存在getter方法(假如我们没有通过@synthesize提供存取方法)转载 2015-05-06 11:44:53 · 812 阅读 · 0 评论 -
NSURLSession的未来
Cocoa网络框架的未来:NSURLSessionNSURLConnection大概有10年的历史了,很多api的设计都比较陈旧,否则AFNetworking不会这么火。好在苹果在iOS 7/Mavericks 引入了新的网络类NSURLSession,用以替代NSURLConnection。新的网络框架设计中,原有的NSURL/NSURLRequest/NSURLResp转载 2015-05-06 18:25:28 · 533 阅读 · 0 评论 -
NSURLSession的工作流程
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。注意,如果用户强制将程序关闭,NSURLSession会断掉。NSURLSession提供的功能:通过URL将数据下载到内存通过URL将数据下载到文件系统将数据上传到指定URL在后台完成上述转载 2015-05-07 09:35:51 · 563 阅读 · 0 评论 -
NSTimer的详细总结
先说一下我的业务需求,最近在做一个小项目,需要用到定时器的功能,NSTimer类,期间,出现了一些小问题,不过最终通过自己的努力,终于做出来了。我想总结一下,我对NSTimer类的学习和理解。不多说了,先上效果图界面元素很简单,两个UIButton 开始和暂停,20表示起始倒计时。最终的效果是,按开始按钮的时候,倒计时开始运行,按暂停按钮的时候,计时器,停止倒计时。当倒转载 2015-05-07 18:54:31 · 583 阅读 · 0 评论 -
@autoreleasepool-内存的分配和释放
@autoreleasepool-内存的分配与释放前言开发过iOS、Mac的朋友应该对“@autoreleasepool”不陌生。只要在Xcode里创建一个工程,就能看到下面这样的代码://iOS programint main(int argc, char * argv[]) { @autoreleasepool { return UIAppli转载 2015-05-27 16:45:08 · 1429 阅读 · 0 评论 -
gcd的同步异步
GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法。进程和线程的概念:正在进行中的程序被称为进程,负责程序运行的内存分配,每一个进程都有自己独立的虚拟内存空间。线程是进程中一个独立的执行路径,即主线程,主线程有1M的栈区,对于耗时的执行路径,可以放在子线程(512K栈区)中执行。Tip:转载 2015-05-27 18:13:51 · 6398 阅读 · 0 评论 -
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 · 777 阅读 · 0 评论 -
为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 · 901 阅读 · 0 评论 -
正确使用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 · 629 阅读 · 0 评论 -
让XCode的 Stack Trace信息可读
让XCode的 Stack Trace信息可读昨天在写iOS代码的时候,调试的时候模拟器崩溃了。异常停在了如下整个main函数的入口处:1234567int main(int argc, char *argv[]){ @autoreleasepool { // 异常停在了下面这行,毫无提示作用转载 2015-07-23 19:45:02 · 691 阅读 · 0 评论 -
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 · 744 阅读 · 0 评论 -
当前uistatusBar前景为白色,当增加uiwindow后,uistatusBar变为黑色的解决方法
问题:当程序的statusbar的字体颜色被navigationbar的背景色决定的时候,比如当navigationbar有背景色,则statusbar的字体颜色为白色,当没有navigationbar的时候,statusbar的字体颜色为黑色,但是当我们在statusbar为白色的时候,增加一个uiwindow,弹出再销毁后,发现statusbar字体颜色变为黑色,与我们设计的不符,如何解决原创 2016-01-13 15:59:57 · 1422 阅读 · 0 评论 -
ios动画
IOS中核心动画主要分4类:基础动画,关键帧动画,动画组,转场动画 CAAnimation:核心动画的基础类,不能直接使用,负责动画运行时间、速度的控制,本身实现了CAMediaTiming协议。CAPropertyAnimation:属性动画的基类(通过属性进行动画设置,注意是可动画属性),不能直接使用。CAAnimationGroup:动画组,转载 2015-05-06 14:09:43 · 521 阅读 · 0 评论 -
OC高级编程——深入block,如何捕获变量,如何存储在堆上
首先先看几道block相关的题目这是一篇比较长的 博文 ,前部分是block的测试题目,中间是block的语法、特性,block讲解block内部实现和block存储位置,请读者耐心阅读。 具备block基础的同学,直接调转到block的实现下面列出了五道题,看看能否答对两三个。主要涉及block栈上、还是堆上、怎么捕获变量。 答案在博文最后一行//-----------第一道转载 2015-05-05 22:11:58 · 1635 阅读 · 0 评论 -
AFNetworking和ASIHttpReust的对比
ASI和AFN以及底层框架的关系 对比ASIAFN更新状态2012年10月份,已经停止更新持续更新中,目前已更新至2.0版介绍ASI的直接操作对象ASIHTTPRequest,是一个实现了了NSCopying协议的NSOperation子类。在initialize和initWi转载 2015-04-27 11:48:25 · 623 阅读 · 0 评论 -
@synchronized()说明
@synchronized(self) { //something like this // codes} 一、当两个并发线程访问同一个对象object中的这个synchronized(self)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、当转载 2015-04-27 11:08:50 · 656 阅读 · 0 评论 -
Objective-C 线程开发总结
NSThread, NSOperation, GCD1>无论使用哪种方法进行多线程开发,每个线程启动后并不一定立即执行相应的操作,具体什么时候由系统调度(CPU空闲时就会执行)。2>更新UI应该在主线程(UI线程)中进行,并且推荐使用同步调用,常用的方法如下:- (void)performSelectorOnMainThread:(SEL)aSelector withObj转载 2015-04-27 11:22:57 · 1968 阅读 · 0 评论 -
NSTimer说明
NSTimer 看到这个标题,你可能会想NSTimer不就是计时器吗,谁不会用,不就是一个能够定时的完成任务的东西吗? 我想说你知道NSTimer会retain你添加调用方法的对象吗?你知道NSTimer是要加到runloop中才会起作用吗?你知道NSTimer会并不是准确的按照你指定的时间触发的吗?你知道NSTimer就算添加到runloop了也不一定会按照你想象中的那样执行转载 2015-04-27 18:29:56 · 506 阅读 · 0 评论 -
initWithNibName与一般init的区别
init只是加载就行,有没有xib无所谓;但是initWithNibName需要xib文件,如果该文件不存在则报错:网上查看了一下,还有和loadNibNamed的区别和联系,暂时我也没用过这个loadNibNamed内容引用自:http://blog.sina.com.cn/s/blog_7b9d64af01018f2u.html转载 2015-04-30 10:34:09 · 818 阅读 · 0 评论 -
UIResponse响应者链
这篇文章想跟大家分享的主旨是iOS捕获用户事件的各种情况,以及内部封装的一些特殊事件。我们先从UIButton谈起,UIButton大家使用的太多了,他特殊的地方就在于其内置的普通Default/高亮Highlighted/选择Selected/可用Enable的几个状态(UIControlState)。其次就是SDK内部已经为我们封装了以下用户事件:最常用的莫过于To转载 2015-04-28 11:43:40 · 2645 阅读 · 1 评论 -
iOS内存警告处理
1. 内存警告的说明在iOS6.0之后,不再支持viewWillUnload 和 viewDidUnload。但依然支持didReceiveMemoryWarning。之所以不支持viewWillUnload和 viewDidUnload,官方文档的解释是:当view不在window视图中时,系统会自动释放view中的耗内存的资源,view中剩余的资源所占内存极小,不值得系统转载 2015-04-28 11:24:54 · 3563 阅读 · 0 评论 -
delegate, notification和kvo模式实现通信的优缺点
在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation; 2.通知中心Notification Center; 3.键值观察key value observing,KVO转载 2015-04-28 09:21:50 · 644 阅读 · 0 评论 -
IOS内存管理
1. 内总管理原则(引用计数) IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外情况) alloc 对象分配后引用计数为1 retain 对象的引用计数转载 2015-04-28 10:24:44 · 631 阅读 · 0 评论 -
iOS运行流程
1.先执行main函数,main内部会调用UIApplicationMain函数 2.UIApplicationMain函数里面做了什么事情: 1> 创建UIApplication对象 2> 创建UIApplication的delegate对象—–PYAppDelegate 3> 开启一个消息循环 每监听到对应的系统事件时,就会通知MJAppDel转载 2015-04-28 10:20:18 · 606 阅读 · 0 评论 -
Run Loop详细说明
Run loops是线程的基础架构部分。一个run loop就是一个事件处理循环,用来不停的调配工作以及处理输入事件。使用run loop的目的是使你的线程在有工作的时候工作,没有的时候休眠。Run loop的管理并不完全是自动的。你仍必须设计你的线程代码以在适当的时候启动run loop并正确响应输入事件。Cocoa和CoreFundation都提供了run loop对象方便配置和管理线转载 2015-04-28 10:45:10 · 956 阅读 · 0 评论 -
理解Objective-C的ARC
自动引用计数(Automatic Reference Counting, ARC)把压在程序员们肩头的管理内存的重担卸除了不少,更不用说让跟踪内存泄漏那样的烦心事也少了很多。不过,虽然ARC很棒,我们仍然不能完全把内存管理这回事儿抛在脑后。这篇文章将要讨论以下方面的问题,帮助大家快速进入ARC的世界。内存的引用计数: 快速复习ARC的工作原理在工程中开启ARCARC施加的新规则AR转载 2015-04-28 12:16:17 · 690 阅读 · 0 评论 -
part1:再论NSString属性的三观
最近在开发过程中看到了针对NSString属性的各种写法,包括我自己,痛定思痛,决定写一遍文章出来摆正三观。先说说我在项目中看到的对NSString属性的写法:1. @property(nonatomic,strong)NSString *tmpStr; - (void)xxxFunc:(NSString *)str { //_tmpStr = str;原创 2016-09-07 11:40:04 · 401 阅读 · 0 评论