XCode4.4新特性

翻译 2012年07月26日 21:49:15

出处:http://stackoverflow.com/questions/9347722/apple-llvm-4-0-new-features-on-xcode-4-4-literals


重要新增特性:

• 使用 properties 默认生成 Objective-C @synthesize 命令
• Objective-C 为数值、数组、字典和表达式增加文字语法
• Apple LLVM 编译器支持附加的 C++11 特性,包括 lambda 表达式
• Assistant editor tracks caller or callee for the current selection.
• 新的本地化工作流可在 OS X 的多个 Locale 中分享单个 .xib 文件
• 源代码可单独提交所选的更改
• ARC 移植工具转换包括 retain/released 和垃圾收集代码
• Fixes an issue where code completion could fail, requiring the user to delete derived data


主要讲讲文字语法:literal syntax

更多关于literal syntax内容参看:http://clang.llvm.org/docs/ObjectiveCLiterals.html

NSArray Literals

以前:

array = [NSArray arrayWithObjects:a, b, c, nil];

现在:

array = @[ a, b, c ];

NSDictionary Literals

以前:

dict = [NSDictionary dictionaryWithObjects:@[o1, o2, o3]
                                   forKeys:@[k1, k2, k3]];

现在:

dict = @{ k1 : o1, k2 : o2, k3 : o3 };

NSNumber Literals

以前:

NSNumber *number;
number = [NSNumber numberWithChar:'X'];
number = [NSNumber numberWithInt:12345];
number = [NSNumber numberWithUnsignedLong:12345ul];
number = [NSNumber numberWithLongLong:12345ll];
number = [NSNumber numberWithFloat:123.45f];
number = [NSNumber numberWithDouble:123.45];
number = [NSNumber numberWithBool:YES];

现在:

NSNumber *number;
number = @'X';
number = @12345;
number = @12345ul;
number = @12345ll;
number = @123.45f;
number = @123.45;
number = @YES;


数组,字典获取元素:

arr[1]      = [arr objectAtIndex:1]
dict["key"] = [dict objectForKey:@"key"]


刚更新XCode4.4用了下,@YES和@NO要报错,只有设置deployment target为ios6或osx10.8才行,ios6还没正式出来,要使用@YES,可以添加如下宏到xxx.pch文件中:

#ifndef __IPHONE_6_0

#if __has_feature(objc_bool)

#undef YES

#undef NO

#define YES             __objc_yes

#define NO              __objc_no

#endif

#endif


另外数组和字典的定义用[]和{}没问题,但通过arr[1]和dict["key"]方式获取数据会报错,也是只能设置deployment target为ios6或osx10.8,目前若要使用,可自己写这两个类的类别,定义如下函数:

NSArray : - (id)objectAtIndexedSubscript: (NSUInteger)index;

NSMutableArray : - (void)setObject: (id)obj atIndexedSubscript: (NSUInteger)index;

NSDictionary : - (id)objectForKeyedSubscript: (id)key;

NSMutableDictionary : - (void)setObject: (id)obj forKeyedSubscript: (id)key;


以NSArray为例,函数体:

- (id) objectAtIndexedSubscript:(NSUInteger)index{
    return [self objectAtIndex:index];
}

另外apple默认实现的setObject函数并没有添加/删除元素,可自定义如下函数体实现:

- (void) setObject:(id)obj atIndexedSubscript:(NSUInteger)index{
    if (index < self.count){
        if (obj)
            [self replaceObjectAtIndex:index withObject:obj];
        else
            [self removeObjectAtIndex:index];
    } else {
        [self addObject:obj];
    }
}
自定义以上类别,可以在pch文件中#import,从而可在项目中任意使用。

以上信息来源:http://stackoverflow.com/questions/11425976/objective-c-literals-accessing-nsarray



表达式:

此种语法适用于算式表达式,c字符,布尔值,枚举常量,字符串:



Xcode4.4、4.5新特性,LLVM 4.0新语法

在Xcode4.5以上,增加了许多新的特性,其中包括很方便的代码输入,可以大大提高写代码的效率。 1.NSNumber 从Xcode4.4起,所有的NSNumber都可以用@123来表示,如: ...
  • cafei111
  • cafei111
  • 2013年05月14日 14:32
  • 854

iOS:新特性二(iOS5.1/xcode4.4)--LLVM4.0

========================self、super========================
  • houseq
  • houseq
  • 2014年08月11日 16:29
  • 923

ios开发xcode4.4(ios6)的一些新特性

方法顺序   如果有以下代码: 01 02 03 04 05 06 07 08 09 10 11 ...
  • asunchaofan
  • asunchaofan
  • 2013年01月13日 18:21
  • 832

iOS:新特性一(iOS5.1/xcode4.4)--LLVM4.0

------------------------initialize------------
  • houseq
  • houseq
  • 2014年08月11日 15:34
  • 1246

Xcode4.4 添加Framework方法

开发环境:Mac OS X 10.8 Xcode: Xcode 4.4 以前在Xcode 3. 几的版本中新增Framework方法,如右击FrameWork文件夹后移动Add 选择Existin...
  • chinahaerbin
  • chinahaerbin
  • 2012年09月13日 17:16
  • 6747

xcode4.4符号化脚本

#!/bin/bash export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer" mypath="/Users/xxx/D...
  • demondev
  • demondev
  • 2012年09月30日 19:14
  • 480

JDK7、JDK8新特性

JDK 1.7 新特性 (转) 1,switch中可以使用字串了 String s = "test"; switch (s) { case "test" : Sy...
  • Hugh_fish
  • Hugh_fish
  • 2015年08月15日 10:40
  • 2050

android 7.0新特性

Android N for Developers 重要的开发者功能 多窗口支持通知JIT/AOT 编译快速的应用安装路径随时随地低电耗模式后台优化Data SaverVulkan APIQ...
  • jiabailong
  • jiabailong
  • 2016年09月02日 10:01
  • 14234

CSS3和H5的新特性

H5的新特性 1.   用于绘画 canvas 元素。 2.   用于媒介回放的 video 和 audio 元素。 3.   本地离线存储 localStorage 长期存储数据,浏览器关...
  • lu_0216
  • lu_0216
  • 2016年12月17日 15:53
  • 8118

JDK7新特性_JDK7的六个新特性

二进制字面量 JDK7开始,终于可以用二进制来表示整数( byte,short,int和long)。使用二进制字面 量的好处是,可以使代码更容易被理解。 语法非常简单,只要在二进制数值前面加 ...
  • L1585931143
  • L1585931143
  • 2017年04月15日 15:18
  • 245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XCode4.4新特性
举报原因:
原因补充:

(最多只允许输入30个字)