Xcode使用小结2

刷新时间慢的时候用timer定时器

以下内容为借用,作者:FlyElephant
出处:http://www.cnblogs.com/xiaofeixiang

iOS开发-NSOperationGCD区别

Mac OS X 10.6及iOS4.0之后导入了可以使全体线程更高效运行,并且使并行处理应用更易开发的架构,GCD(Grand Central  Dispatch),同时引入的还有Run Loop,线程(包括Cocoa和POSIX)和Operation。GCD拥有非常轻量级的工作单元和并发方式,并且由系统决定其最佳调度方式。这个时候出现了一个问题,NSOperation如何处理呢?

其实我们在通过NSOperation和GCD进行开发过程中,会发现两者执行的方式有许多相似之处,NSOperation和GCD参照对比,NSOperationQueue和dispatch_queue参照对比,但是两者之间还是有许多差别的,具体区别:

1.GCD的核心是C语言写的系统服务,执行和操作简单高效,因此NSOperation底层也通过GCD实现,换个说法就是NSOperation是对GCD更高层次的抽象,这是他们之间最本质的区别.因此如果希望自定义任务,建议使用NSOperation;

2.依赖关系,NSOperation可以设置两个NSOperation之间的依赖,第二个任务依赖于第一个任务完成执行,GCD无法设置依赖关系,不过可以通过dispatch_barrier_async来实现这种效果;

3.KVO(键值对观察),NSOperation和容易判断Operation当前的状态(是否执行,是否取消),对此GCD无法通过KVO进行判断;

4.优先级,NSOperation可以设置自身的优先级,但是优先级高的不一定先执行,GCD只能设置队列的优先级,无法在执行的block设置优先级;

5.继承,NSOperation是一个抽象类实际开发中常用的两个类是NSInvocationOperation和NSBlockOperation,同样我们可以自定义NSOperation,GCD执行任务可以自由组装,没有继承那么高的代码复用度;

6.效率,直接使用GCD效率确实会更高效,NSOperation会多一点开销,但是通过NSOperation可以获得依赖,优先级,继承,键值对观察这些优势,相对于多的那么一点开销确实很划算,鱼和熊掌不可得兼,取舍在于开发者自己;

关于主要的区别都已经总结,根据实际开发中来说,GCD使用情况较多,简单高效,从变成原则上来看,应该是使用高层次的抽象,避免使用低层次的抽象,那么无疑我们应该选择NSOperation,因为复杂的任务可以自己通过NSOperation实现,日常还是GCD的天下,毕竟GCD有更高的并发和执行能力。

时间: 2025-01-13 15:04:47

Xcode使用小结2的相关文章

Xcode使用小结1

工程项目 -> General->launch Screen file这个如果没有设置,则app的可见范围为3.5inch(APP的可见范围是由启动界面决定的) PUSH方法是在navigationController容器中进行切换,present是navigationController容器上覆盖 Main.c中程序启动原理 Pch文件 weak对象释放后 ,指向0地址 assign对象释放后,指向地址不变(野指针) 上图写协议时默认把自己传递出去 快捷键: 在同程序下进行切换 comman

MacBook 以及 XCode 使用小结

// Xcode 最最基本的常用快捷键(想看效果的话执行比调试应该要快): // 1.在所属范围内修改所有变量名:control + command + t; // 2.在 .m文件和 .h 文件之间切换:alt + command + up; // 3.智能提示: command + ,; command + .; command + esc; // 4.查看控制台输出:shift + command + r; // 5.复制代码:command + c; // 6.剪切代码:command

Xcode编程问题小结

Xcode编程问题小结,有需要的朋友可以参考下. 解决软件安装失败问题万能方法,重置模拟器,重启xcode,clean工程 1.push新的界面跟老界面重叠,是新界面背景色是clear的颜色,新建的界面默认clear: 2.要是在contentView里面显示一个新的界面,这个界面要push新的界面,还是会被框在content里面, [self.mainVC.navigationControllerpushViewController:aboutVCanimated:YES]; 用这个就会跳出c

iOS xcode使用断点追踪后,无法nslog,无法po对应的值 方法小结

今天使用断点追踪后,发现无法正常nslog,使用po也无法打印出对应的值,进入断点显示的值都为nil,网上查了一下,我总结出了以下几个可行方法: 法一:项目根目录->PROGECT->Build Setting->Optimization Level,将“Optimization Level”的值设置为“None[-O0]”,再重新运行程序即可解决问题. 法二:将工程的release改为Debug,再重新运行工程功能即可. 法三:将build setting 里的Other C Flag

XCode和Cocoa在开发中使用第三方dylib示例

XCode和Cocoa在开发中使用第三方dylib示例 www.educity.cn   发布者:yukowang   来源:网络转载   发布日期:2014年06月13日 XCode和Cocoa在开发中使用第三方dylib示例是本文要介绍对内容,所谓dylib,就是bsd风格的动态库.基本可以认为等价于windows的dll和linux的so.mac基于bsd,所以也使用的是 dylib. 如果你需要引用一个第三方的dylib,在xcode下编译出cocoa程序,在本机上运行是不会出问题的.但

[C++] 用Xcode来写C++程序[6] Name visibility

用Xcode来写C++程序[6] Name visibility 此小结包括了命名空间的一些使用细节 命名空间 #include <iostream> using namespace std; namespace foo { // 函数 int value() { return 5; } } namespace bar { // 常量 const double pi = 3.1416; // 函数 double value() { return 2*pi; } } int main () {

iOS: 图解Xcode常用的快捷键

对于习惯了Windows 操作的开发者来说, 初次接触Xcode时,你会感到有种种不适,其中一个重要的原因就是, 相比Windows X86 电脑, Mac 多出了两个物理键: Fn  和 Command.  尤其是 Command键,在 Mac 上大行其道,真可谓神通广大. 如果你想提供高开发效率,尤其是在众人面前演示时,显得驾轻就熟,就得熟悉几招 快捷键,这一组合拳. 其实快捷键在Xcode的工具栏里都有标注,只是有的符号和你的键盘上的符号对应不起来罢了.下面截图工具栏里的快捷键总结一下常用

手动和自动引用计数小结

自动引用计数:(arc)自动去释放掉你声明的,但是你用完了的对象内存. 手动引用计数:(mrc)需要手动去释放掉,你自己声明的对象. 现在的xcode是自动引用计数,但是你可以调用配件,将你的整个工程,或其中的某个.m变成手动引用计数. 将整个工程变成手动引用计数的步骤为: 1 2 3 4 将某个.m文件变成手动引用计数的步骤为: 在你所需要把自动引用计数变为手动引用计数的.m文件后面的  compiler flags中 写入-fno-objc-arc就可以了,写入-fobjc-arc则是自动引

【转】个人常用iOS第三方库以及XCode插件介绍 -- 不错

原文网址:http://adad184.com/2015/07/08/my-favorite-libraries-and-plugins/ 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上所有的商业项目 都会或多或少的使用到第三方库 Github上Star>100的开源库数量如下 可以看到JS以绝对的优势排名第一 一定程度上也说明了JS在这几年为什么发展得这么迅速 不会点JS都不好意思说自己是码农 不过现在JS圈的造轮子浪潮也是愈演愈烈了 自己不写个框架都不好意思打招呼 OC排名第四