WWDC(Apple Worldwide Developers Conference),苹果开发者大会,苹果开发者怎么能少得了Objective-C,正是它支撑着整个苹果开发生态圈,同样这门语言也代表着苹果的精神和未来方向。这是我最最喜爱的语言,优雅、高端、大气、上档次。对于开发者来说,选择什么平台就意味着去抱谁的大腿,苹果在这点做的就很是出色,苹果凭借着独有一门语言的优势,不断的使Objective-C变的强大易用,一步步地向着现代进化。每年的WWDC,苹果都会带来在Objective-C上的新突破,看看今年的苹果带来的新玩意儿。

舆论口水喷苹果从设计的引领者倒退到了追随者,但是在编程语言上的现代化理解,苹果一直独领风骚。

一、Objective-C进化的理念

  1. 开发效率:简化,易用,强大的工具
  2. 软件质量:更容易揪出Bug,预测、实用

这次的革新:Modules、更高效、ARC提升

二、Modules

之前写代码时,如果加入一些框架,比如iAd、GameCenter等,不能简单的import进来

#import <iAd/iAd.h>  (错误)

如果这样引入,直接Build failed。得在工程设置里面,像这样引入框架。

这样就显得繁琐,很不易于使用

进化过后的Objective-C支持下面的语句,可以直接导入iAd框架。

@import iAd; (全部导入)

@import iAd.ADBannerView; (选择性导入)

#import <iAd/ADBannerView.h> (支持这种语句,兼容老的代码)

这样一来再也不需要去手动添加框架,同时由于Modules改变了引入的模式,使用新的机制能够一定程度提升性能。

 

使用新的Xcode,然后开启Modules,一切就OK了,不用对代码做任何修改!

小结一下Modules

  1. 简化框架的使用,加快导入和链接
  2. 提升IDE性能
  3. 不用对代码做任何修改

三、更高效

更现代的Objective-C语法

例如,下面是老的代码写法

-(NSDictionary *)example {

return [NSDictionary dictionaryWithObjectsAndKeys:

@"Willie", @"PreferredName",

@"The Lion", @"NickName",

@"Smith", @"LastName",

@"William", @"FirstName",

[NSArray arrayWithObjects: @"Henry", @"Joseph",

@"Bonaparte",@"Bertholoff", nil], @”MiddleNames”,

[NSNumber numberWithInt: 79], @”Age”,

[NSNumber numberWithInt: 1893], @”BirthYear”,

[NSNumber numberWithInt: 1973], @”DeathYear”,

[NSNumber numberWithBool: YES], @”Male”,nil];

}

这个是新的支持语法风格

-(NSDictionary *)example {

return @{

@”PreferredName”: @”Willie”,

@”NickName”: @”The Lion”,

@”LastName”: @”Smith”,

@”FirstName”: @”William”,

@”MiddleNames”: @[ @"Henry", @"Joseph", @"Bonaparte", @"Bertholoff" ],

@”Age”: @79,

@”BirthYear”: @1893,

@”DeathYear”: @1973,

@”Male”: @YES

};

}

这样以来,减少了很多重复来重复去的输入,极大提升了代码书写效率,也能让代码变的更加易于阅读。现代的语法风格就举一例,更多的用法自行查阅文档。

Objective-C 的语法一直在最求更易阅读,读起来就像英语一样,一目了然,优雅大气。

同时Xcode这个强大的SDK,一直在提升。这次的进化包括:更强的纠错,更安全,枚举类型直接显示类型,甚至还有一个新的关键字(instancetype,使用这个加入了对返回值的纠错)。

四、Garbage Collection(垃圾回收) 和 ARC(Automatic Reference Counting 自动引用计数)

垃圾回收机制已经不再使用,全面使用ARC机制。

ARC的进化

  1. Xcode5.0 使用 ARC, 之前使用的是垃圾回收,提升Xcode性能
  2. 继续优化
  3. 若指针引用效率在iOS7.0和OSX10.9上得到两倍提升
  4. 内存管理更高效
  5. ARC转移器,轻松为老代码使用ARC。
  6. 新的内存管理警告,解决一些使用ARC而遇到的问题,曾经为此纠结过(T_T)

总体来说Objective-C 正是有了 Apple 的对之的不断提升和IDE的不断进化,表现出独特的蓬勃活力,变的更加优雅美丽,不断有新的血液注入,虽然一定程度增加了学习成本,但是换来的是高效和便捷,何乐而不为呢。

WWDC2013 Objective-C 新特性的更多相关文章

  1. iOS开发——新特性OC篇&Objective新特性

    Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...

  2. iOS - Swift Swift 语言新特性

    1.Swift 2.0 带来哪些新变化 常规变化: 1.OS X 10.11.iOS 9 和 watchOS 2 SDK 采纳了一些 Objective-C 的特性用来提高 Swift 的编程体验, ...

  3. iOS 8 新特性

    这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...

  4. Xcode5和ObjC新特性

    Welcome to Xcode 5 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览.本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的 ...

  5. 开发者所需要知道的iOS7 SDK新特性

    iOS 7 春风又绿加州岸,物是人非又一年.WWDC 2013 keynote落下帷幕,新的iOS开发旅程也由此开启.在iOS7界面重大变革的背后,开发者们需要知道的又有哪些呢.同去年一样,我会先简单 ...

  6. IOS9新特性之Contacts联系人

    在以前iOS开发中,涉及联系人相关的编程,代码都非常繁琐,并且框架的设计也不是Objective-C风格的,这使开发者用起来非常的难受.在iOS9中,apple终于解决了这个问题,全新的Contact ...

  7. SQL Server 2014 新特性——内存数据库

    SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...

  8. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  9. [干货来袭]C#6.0新特性

    微软昨天发布了新的VS 2015 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下也是昨天发布的新的C#6.0的部分新特性吧.. ...

  10. CSS3新特性应用之结构与布局

    一.自适应内部元素 利用width的新特性min-content实现 width新特性值介绍: fill-available,自动填充盒子模型中剩余的宽度,包含margin.padding.borde ...

随机推荐

  1. C++:多线程001

    C++ 多线程 创建线程的API函数 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,//SD:线程安全相关的属性,常置为N ...

  2. Android开发 Html工具类详解

    前言 在一些需求富文本显示或者编辑的开发情况下,数据都是用html的格式来保存文本信息的.而google是有提供解析html的工具类那就是Html.有了Html可以让TextView也支持富文本(其实 ...

  3. Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数【转】

    Java虚拟机性能管理神器 - VisualVM(8) 查找JAVA应用程序耗时的方法函数[转] 标签: javajvm监控工具性能优化 2015-04-07 16:47 1846人阅读 评论(0)  ...

  4. threading.local在flask中的用法

    一.介绍 threading.local的作用: 多个线程修改同一个数据,复制多份变量给每个线程用,为每个线程开辟一块空间进行数据的存储,而每块空间内的数据也不会错乱. 二.不使用threading. ...

  5. 【转】浅析BFC及其作用

    1. 什么是BFC BFC(block formatting context):简单来说,BFC 就是一种属性,这种属性会影响着元素的定位以及与其兄弟元素之间的相互作用. 中文译为块级格式化上下文.是 ...

  6. Office宏的基本利用

    前言 Office宏,译自英文单词Macro.宏是Office自带的一种高级脚本特性,通过VBA代码,可以在Office中去完成某项特定的任务,而不必再重复相同的动作,目的是让用户文档中的一些任务自动 ...

  7. OpenCASCADE点向圆柱面投影

    OpenCASCADE点向圆柱面投影 eryar@163.com OpenCASCADE的类Extrema_ExtPElS提供了点到基本曲面的投影计算功能,距离可能是最大值或是最小值.如下图所示的点到 ...

  8. vue swiper点击后返回不能自动播放

    解决方法: 在返回时重新开启轮播 组件中: <swiper :options="swiperOption" ref="mySwiper" :class=& ...

  9. ElasticSearch入门之花落红尘(三)

    上篇文章散仙介绍了ElasticSearch的入门安装和使用,那么本篇我们来看下,如何使用java api来和ElasticSearch进行交互,简单点说,就是实现一个增删改查,来找找入门的感觉. 在 ...

  10. java最常用的几种加密算法

    1. BASE64 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递 ...