写这篇博客源于一个疑问:“WoK~, 这也行?!”。刚接触OC不久,今天做深浅拷贝的测试,无意中把获取NSArray的值写成了用下标获取的方式。当时把注意力放在了深浅拷贝的内存地址分析上了,就没太在意,测试做完啦,在回顾的时候发现数组是用下标的方式获取的! 于是就有了个疑问,在OC中这样写也行?不是NSArray中有一个方法叫做objectAtIndex来专门获取数组的元素嘛,嗯~用下标也行?此时心里窃喜,可以简化一下数组访问元素的方式了,又可以偷懒啦!!为了更好的偷懒,于是去百度上Google啦一下这是‘ Xcode 4.4中LLVM compiler 4.0’ 引入的新特性(2012年WWDC发布的东西)。到这小菜本人就有柳暗花明又一村的感觉啦~就可以好好的偷一下懒啦~于是系统的总结了一下引入的新的特性,话不多说,Coder说话哪能少的了code呢!ludashi~走起~(虽然是12年的东西,这不刚学蛮~在OC中用感觉挺新鲜的,简化后对字典的初始化感觉和PHP有点相似~感觉见到亲人啦~)

  问题是数组引起的那么就从数组开始吧

  1.一般数组的初始化和访问数组元素是这样的

    在之前的博客中我是这样初始化NSArray的:

 //NSArray的便利初始化
NSArray *array1 = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil];
//NSArray的便利构造器
NSArray *array2 = [NSArray arrayWithObjects:@"", @"", @"", nil];

    获取数组的元素

//获取相应索引的元素
id element = [array1 objectAtIndex:];
NSLog(@"array1_count = %d, array[0] = %@", count, element);

   简化后的数组初始化和访问的做法如下

         //NSArray的定义
NSArray *array = @[@"lu", @"da", @"shi", @YES, @];
int count = (int)[array count]; for (int i = ; i < count; i++)
{
NSLog(@"%@", array[i]);
}

  2.对字典(NSDictionary)的简化

    也引用我之前博客中得一段代码吧

//不可变字典的初始化
NSDictionary *dictionay = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
id value = [dictionay objectForKey:@"key1"];
NSLog(@"key1 => %@", value);

   我们还可以这样做

        //NSDictionary的定义简化
NSDictionary *dictionary = @{
@"key0" : @"value0",
@"key1" : @"value1",
@"key2" : @"value2"
};
NSLog(@"key2 => %@", dictionary[@"key2"]);

  3.对NSNumber简化

    我们可以这样做

    ​    ​    ​    ​把基本类型包装成对象的便利构造函数

    ​    ​    ​    ​    ​-(id) initWithChar : (char) value;

    ​    ​    ​    ​    ​-(id) initWithInt : (int) value;

    ​    ​    ​    ​    ​-(id) initWithFloat : (float) value;

    ​    ​    ​    ​    ​-(id) initWithBool: (BOOL) value;

    ​    ​    ​    ​把基本数据类型包装成对象的便利构造器

    ​    ​    ​    ​    ​+(id) numberWithChar : (char) value;

    ​    ​    ​    ​    ​+(id) numberWithInt : (int) value;

    ​    ​    ​    ​    ​+(id) numberWithFloat : (float) value;

    ​    ​    ​    ​    ​+(id) numberWithBool : (BOOL) value;

  

  我们也可以这样做,说明:在char转换为NSNumber是存的是ASCII码的形式,c输出为97

        //NSNumber的简化
NSNumber *a = @123;
NSNumber *b = @11.2;
NSNumber *c = @('a');
NSLog(@"a = %@, b = %@, c = %@", a, b, c);

Objective-C中的语法糖的更多相关文章

  1. Java 中的语法糖

    百度百科对语法糖的定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这 ...

  2. [转]谈谈Java中的语法糖

    *该博客转自 http://blog.csdn.net/danchu/article/details/54986442 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某 ...

  3. JVM(二):Java中的语法糖

    JVM(二):Java中的语法糖 上文讲到在语义分析中会对Java中的语法糖进行解糖操作,因此本文就主要讲述一下Java中有哪些语法糖,每个语法糖在解糖过后的原始代码,以及这些语法糖背后的逻辑. 语法 ...

  4. 浅析java中的语法糖

    概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...

  5. 【Java基础】Java中的语法糖

    目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...

  6. 看看C# 6.0中那些语法糖都干了些什么(终结篇)

    终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...

  7. 看看C# 6.0中那些语法糖都干了些什么(中篇)

    接着上篇继续扯,其实语法糖也不是什么坏事,第一个就是吃不吃随你,第二个就是最好要知道这些糖在底层都做了些什么,不过有一点 叫眼见为实,这样才能安心的使用,一口气上五楼,不费劲. 一:字符串嵌入值 我想 ...

  8. 看看C# 6.0中那些语法糖都干了些什么(上篇)

    今天没事,就下了个vs2015 preview,前段时间园子里面也在热炒这些新的语法糖,这里我们就来看看到底都会生成些什么样的IL? 一:自动初始化属性 确实这个比之前的版本简化了一下,不过你肯定很好 ...

  9. Java中的语法糖

    一.范型 1. C#和Java范型的区别 在C#中范型是切实存在的,List<int>和List<String>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类 ...

  10. Java 中的语法糖(7/15整个周六上午总结)

    语法糖定义指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会:但是这种语法对语言的功能并没有影响.Java中的泛型,变长参数,自动 ...

随机推荐

  1. xcode 版本控制推送代码到远程git仓库的步骤

    一 代码推送到远程git仓库 1.在git中建立一个下项目(假设项目名称为->Mygit) 2.在xocde上新建一个测试项目(假设项目名称为GitTest) 3.打开电脑终端: 1)首先利用终 ...

  2. Torch7学习笔记(三)Sequencialization

    1.序列化 Torch提供4种高级方法来序列化或者反序列化任意Lua/Torch对象.这些方法都是从File对象抽象出来的,为了方便操作而创建. 前两种方法用来从文件序列化或者反序列化的: torch ...

  3. ViewHolder优化2>:

    ViewHoder优化:     @Override         public View getView(int position, View convertView, ViewGroup par ...

  4. 喜马拉雅FM抓包之旅

    一.概述 最近学院组织安排大面积实习工作,今天刚刚发布了喜马拉雅FM实习生招聘的面试通知.通知要求:公司采用开放式题目的方式进行筛选,申请的同学须完成如下题目 写程序输出喜马拉雅FM上与"卓 ...

  5. Python之路【第二篇】python基础 之基本数据类型

    运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: name = "yehaoran " # in 判断ye是否在name里面 在的话返回ok ...

  6. DAO模型

    DAO模型 前面我们在使用JDBC时解决的都是一些很简单的问题,例如登录,注册等等,所以有些例直接把代码写在了main方法中.这种写法很容易出现代码臃肿,耦合度高,不能模块化开发等诸多弊端,特别是将来 ...

  7. 【SQLServer】“无法对数据库'XXX' 执行删除,因为它正用于复制”的解决方法

    从今天起,把编程中遇到的所有问题都记录下来,以便今后参考,以及方便网友查阅,希望我的问题可以帮助到很多志同道合的人们,我也是受很多前辈的提点,一步一步走来,希望大家都不要吝啬,将自己遇到的问题记录下来 ...

  8. Unity3D 与android交互流程步骤

    1.Android端代码可以在Eclipse中开发(AndroidStudio没有试,应该也可以) 2.Unity3D端代码要在Unity中开发 3.Android和Unity3D端,两边都需要加入一 ...

  9. 使用html5 地理位置技术 和 百度地图api查询当前位置

    使用了  zepto  和 requirejs define(['zepto'],function($){ var geolocation = { init:function(config,onSuc ...

  10. [转]html5表单上传控件Files API

    表单上传控件:<input type="file" />(IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持.) 1.允许上传文件数量 允许选择多个文件:< ...