- 浏览: 611390 次
文章分类
最新评论
-
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 461原文:http://www.zhihu.com/questio ... -
strong weak copy
2016-04-24 21:01 591copy的使用 如果是mutable,则co ... -
App性能优化思考
2015-10-13 15:24 870一个app的数据 启动时间 crash率 每个 ... -
iOS之手势操作
2015-01-19 10:24 745手势学习: https://developer. ... -
iOS之网络学习
2015-01-19 10:23 609网络学习: http://nshipster.c ... -
nib文件的加载过程
2014-10-24 13:39 725参考:http://blog.csdn.net/nokiax ... -
NSCoder&&NSCoding使用
2014-10-24 11:38 730NScoder和NScoding的作用是将自定义的类的对象持 ... -
Autolayout学习
2014-10-20 16:32 697参考: http://my.oschina. ... -
IOS开发屏幕适配总结
2014-10-20 16:28 411面对4个分辨率的iPhone,建议使用Auto Layou ... -
Size Classes学习
2014-10-20 16:27 725Size Classes介绍:http://blog.su ... -
iPhone6分辨率以及适配
2014-10-20 11:36 1272对iPhone6适配的两种方式:1、兼容模式 这种模式 ... -
Core Animation简介
2014-10-19 15:33 744在iOS中,整个view都是直接构建在Core Animat ... -
Charles使用——HTTP代理服务器
2014-10-19 15:32 2001* HTTP代理服务器,监听8888端口 * HTTP监视 ... -
《精选》开发中遇到的问题总结
2014-10-19 15:31 9731、新浪微博的使用 使用的事umeng的SDK来调用微信、 ... -
使用JavaScript给UIWebView中的内容注入CSS
2014-10-06 21:26 1111NSString *filePath = [[NSB ... -
UIViewde的属性edgesForExtendedLayout
2014-09-26 17:56 658edgesForExtendedLayout 指定边缘 ... -
UIView的属性autoresizingMask
2014-09-26 17:36 726在 UIView 中有一个autoresizingMask ... -
UIWebView获取内容的高度
2014-09-24 13:13 705// 第一种方法 ... -
storyboard的总结
2014-09-02 11:30 690两个基本概念 scene 就是一个视图控制器 se ...
相关推荐
winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14.0.3-mingw-w64msvcrt-10.0.0-r3.zip
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
1.用于高通骁龙xbl.elf镜像的编译 2.UEFI编译lk
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
赠送jar包:llvm-13.0.1-1.5.7.jar; 赠送原API文档:llvm-13.0.1-1.5.7-javadoc.jar; 赠送源代码:llvm-13.0.1-1.5.7-sources.jar; 赠送Maven依赖信息文件:llvm-13.0.1-1.5.7.pom; 包含翻译后的API文档:llvm-...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
赠送jar包:llvm-13.0.1-1.5.7.jar; 赠送原API文档:llvm-13.0.1-1.5.7-javadoc.jar; 赠送源代码:llvm-13.0.1-1.5.7-sources.jar; 赠送Maven依赖信息文件:llvm-13.0.1-1.5.7.pom; 包含翻译后的API文档:llvm-...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
离线安装包,亲测可用
Obfuscator-LLVM 4.0 BUILD AND SETUP TO NDK 1.执行shell之前 需要先配置环境变量$NDK_ROOT; debian/ubuntu 配置$NDK_ROOT: vi .bashrc mac os x 配置$NDK_ROOT: vi .bash_profile 如果不能提供该环境变量,则手动...
支持c++23
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
LLVM 程序员手册 —— LLVM 4.0 文档LLVMLLVMLLVMLLVM
nuitka依赖资源
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装