- 浏览: 624328 次
文章分类
最新评论
-
q781253433:
qin ~.求demo看看~
Android之Widget -
zhongyuanceshi:
博主,没看到你的例子的Demo,共享下
Android之Widget
LLVM 是 Low Level Virtual Machine (低级虚拟机)的简称,这个库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。
LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。
Xcode 4.4中LLVM compiler 4.0带来的Objective-C新语法特性
1.使用的方法代码放置的位置顺序无关,没在.h文件中声明的方法,有的时候如果方法不在前面,可能会有警告。新的编译器会先扫描代码中的方法然后在编译,方便很多。
2.@property对于使用Objective-C的程序员来说是相当熟悉的,property方便自动生成变量的getter 和setter。在.h文件中声明之后,还要在.m文件中加上@synthesize关键字,这样才能完成自动getter 和setter的过程。
比如说,我在.h文件中写了
@property (strong, nonatomic) NSDictionary *order;
我还要去对于的.m文件中写上
@synthesize order;
是不是感觉很多余啊?现在在语法新特性中不用写这行代码了,新版的编译器帮你实现这行代码。也是说,你在.h文件中声明order属性后,就可以直接在实现文件中使用该属性的getter和setter方法,编译器还会根据属性的可读和可写自动判断是否提供setter方法。智能多了。
3.更多新特性参考:http://lxmdrw.blog.163.com/blog/static/2771697120128195203370/
__unsafe_unretain、__strong、__weak、__autoreleasing是出现在 LLVM 编译器 3.0版本之后。而__unsafe_unretain、__strong、__autoreleasing可以在不使用ARC(自动参考计数)可用。在ARC下,默认的指针都是__strong属性。这意味着一个对象赋值给另外一个指针,那么只要指针参考了该对象,该对象就会一直保持。这对于大部分对象都实用,但是这可能会导致retain cycle。例如,你拥有一个对象包含了另外了一个实例变量对象,但是第二个对象又把前一个对象作为它的委托,那么这两个对象将不会被释放。
因为上面的原因,所以才有了__unsafe_unretain和__weak限定符存在。他们通常用来修饰delegate,即定义一个delegate的属性时,使用__unsafe_unretain和__weak来修饰,然后通过使用__unsafe_unretain和__weak来单独标记实例变量。这意味着delegate实例变量将仍然能够指向第一个对象,但是它不会导致保留第一个对象,因此打破了retain cycle,而能够释放两个对象
除了delegate,__unsafe_unretain和__weak修饰符也还能避免你的代码出现retain cycle。Leaks instrument现在包含了一个cycle视图,能够发现你的应用中的retain cycle,并图像显示出来。
__unsafe_unretain和__weak都能避免retain cycle,但是他们也有一些细微的不同。对于__weak,当释放指针指向的对象时,该对象的指针将转换为nil,这是比较安全的行为。而__unsafe_unretain,正如其名称隐藏的含义,尽管释放指针指向的对象时,该指针将继续指向原来的内存。这将会导致应用crash,所以是unsafe。
为什么我们仍要使用__unsafe_unretain呢?这是因为__weak直到iOS5.0以及lion之后才出现。
而__autoreleasing 的英文解释为:to denote arguments that are passed by reference (id *) and are autoreleased on return,即主要是在引用传参时使用。
发表评论
-
tableview FPS 优化
2016-06-28 11:26 1现状: 在滚动tableview ... -
iOS 开发者中的公司账号与个人账号之间有什么区别?
2016-06-23 14:54 500原文:http://www.zhihu.com/questio ... -
strong weak copy
2016-04-24 21:01 629copy的使用 如果是mutable,则co ... -
App性能优化思考
2015-10-13 15:24 907一个app的数据 启动时间 crash率 每个 ... -
iOS之手势操作
2015-01-19 10:24 781手势学习: https://developer. ... -
iOS之网络学习
2015-01-19 10:23 642网络学习: http://nshipster.c ... -
nib文件的加载过程
2014-10-24 13:39 793参考:http://blog.csdn.net/nokiax ... -
NSCoder&&NSCoding使用
2014-10-24 11:38 756NScoder和NScoding的作用是将自定义的类的对象持 ... -
Autolayout学习
2014-10-20 16:32 744参考: http://my.oschina. ... -
IOS开发屏幕适配总结
2014-10-20 16:28 450面对4个分辨率的iPhone,建议使用Auto Layou ... -
Size Classes学习
2014-10-20 16:27 765Size Classes介绍:http://blog.su ... -
iPhone6分辨率以及适配
2014-10-20 11:36 1307对iPhone6适配的两种方式:1、兼容模式 这种模式 ... -
Core Animation简介
2014-10-19 15:33 778在iOS中,整个view都是直接构建在Core Animat ... -
Charles使用——HTTP代理服务器
2014-10-19 15:32 2054* HTTP代理服务器,监听8888端口 * HTTP监视 ... -
《精选》开发中遇到的问题总结
2014-10-19 15:31 10081、新浪微博的使用 使用的事umeng的SDK来调用微信、 ... -
使用JavaScript给UIWebView中的内容注入CSS
2014-10-06 21:26 1156NSString *filePath = [[NSB ... -
UIViewde的属性edgesForExtendedLayout
2014-09-26 17:56 692edgesForExtendedLayout 指定边缘 ... -
UIView的属性autoresizingMask
2014-09-26 17:36 764在 UIView 中有一个autoresizingMask ... -
UIWebView获取内容的高度
2014-09-24 13:13 744// 第一种方法 ... -
storyboard的总结
2014-09-02 11:30 734两个基本概念 scene 就是一个视图控制器 se ...
相关推荐
Objective-C 2.0是苹果公司在2005年发布的一个重要版本,其中引入了许多新特性来提高性能和简化编程过程。 #### 三、Objective-C 2.0的主要特性 ##### 3.1 类与对象 Objective-C 2.0支持传统的面向对象编程概念,...
Objective-C是C的超集,增加了面向对象特性,如类别(Category)、协议(Protocol)和消息传递。而C++则是在C的基础上加入了类、模板和异常处理等面向对象编程概念。由于它们在语法上的不同,混编时需要遵循一定的...
在Objective-C开发中,Clang特别重要,因为它能够理解Objective-C的语法特性,如消息传递和类别等。它还能与LLVM的其他部分结合,为Objective-C程序提供高级的优化和分析。 总结来说,LLVM和Clang的组合为C、C++和...
首先,Swift与Objective-C的混编基于Apple的Clang编译器和LLVM工具链,它们能够理解并转换两种语言的语法。为了在Swift项目中引入Objective-C代码,你需要确保你的Xcode项目设置正确。"Swift中使用OC.xcodeproj"这个...
Objective-C的编译器主要有LLVM(由GCC发展而来,主要用于苹果平台)和GnuStep。GnuStep提供了Windows版的GCC编译器,可以配合Code::Blocks进行Objective-C程序的编译和调试。首先,访问GnuStep网站...
这个项目最初由Chris Lattner在2003年开发,现在已经成为一个广泛使用的编译器基础设施,支持C、C++、Objective-C、Swift等多种编程语言。本教程原名为"llvm-tutorial-standalone",但现在已被官方弃用,推荐使用...
Clang是LLVM项目的一部分,是一个轻量级且高效的C、C++、Objective-C以及Objective-C++的前端,而LLVM则是一个模块化的编译器基础设施,可以用于构建各种编译工具。 1. Clang简介:Clang的主要特点是它的快速编译...
由于其模块化的设计,LLVM可以用于不同的编程语言的编译,包括但不限于C、C++、Objective-C、Fortran、Ada以及各种脚本语言。 本书《LLVM Cookbook》详细介绍了如何使用LLVM进行编译器设计和使用。本书内容涉及LLVM...
2. **Frontends**:LLVM支持多种编程语言的前端,如C、C++、Objective-C、Swift、Rust等,将这些语言的源代码转化为LLVM IR。 3. **Optimizers**:LLVM提供了丰富的代码优化器,例如常量折叠、死代码消除、循环展开...
- **Clang**:轻量级且快速的编译器,是LLVM项目的一部分,支持C、C++、Objective-C和Objective-C++。 - **Microsoft Visual C++**:微软提供的IDE,内置C和C++编译器,主要针对Windows平台。 - **MinGW**:...
Clang作为LLVM项目的一个重要组成部分,是C、C++以及Objective-C编译器的前端,它以快速编译、模块化设计以及良好的集成性而著称。 首先,让我们来探究LLVM的多面性。LLVM不仅可以用于常规编译器的构建,还能够被...
2. **Clang**:Clang是LLVM项目的一部分,是一个C、C++、Objective-C和Objective-C++的前端。它将源代码转化为LLVM IR,提供了快速的编译速度和优秀的错误消息。 3. **LLVM Compiler**:LLVM包含一套后端,可以生成...
block是C级别的语法和运行时特性,和标准C函数类似,但它可以绑定变量自动绑定(栈)或内存托管(堆),因此能够维护一个状态集(数据),在执行时可以影响程序行为。开发者可以用block编写函数表达式,并将其作为API...
1. GCC(GNU Compiler Collection):开源且跨平台,支持多种语言,包括C、C++、Objective-C等。 2. Clang:轻量级且快速,与LLVM项目一起使用,提供更好的错误报告。 3. Microsoft Visual C++:Windows平台上的开发...
在IDE特性上,Codeine支持C语言的语法高亮,使得源代码更易读,有助于开发者快速定位和理解代码。对于C++和Objective-C的支持,则让开发者可以在同一环境中处理Cocoa和Objective-C++项目,这对Mac OS X应用的开发至...
C编译器是编程语言中的一个关键工具,它将程序员用C语言编写的源代码转换成计算机可执行的机器码。C语言是一种广泛使用的、低级的、过程性的编程语言,由贝尔实验室的Dennis Ritchie在1972年开发。它的设计目标是...
1. **Blocks as a Syntactic and Runtime Feature**: Blocks是C级别的语法和运行时特性,类似于标准的C函数,但它们不仅包含可执行代码,还可以包含对栈上或堆上自动管理内存的变量绑定。这意味着一个block可以保持...
使用gcc(GNU Compiler Collection)可以进一步了解目标代码生成和链接过程,它是一个完整的编译系统,包括C、C++、Objective-C、Fortran等多种语言的编译器。 通过这些实验,你不仅会掌握编译原理的基本概念,还将...
LLVM的Clang项目是一个C、C++和Objective-C的前端,它也可以作为其他语言的前端使用,Olifant可能就是这样一个受益者。Clang提供了快速的编译速度和良好的错误报告,这使得Olifant在开发过程中具有更好的反馈机制,...
Block对象是一种C级别的语法和运行时特性,类似于标准C函数但具有更强的功能。Block不仅可以包含可执行代码,还可以封装局部变量,这些变量根据Block的生命周期而存在。Block能够捕获并记住变量的状态,即使在Block...