Xcode4.4引入了LLVM 4.0编译器,该编译器为Objective-C提供了一些增强特性,下标表示法就是其中之一。大大简化了容器变量的使用,同时又很好地增强了可读性。让我们看一看下面这段代码:
NSArray * array = @[@"a", @"b", @"c"];
NSLog(@"%@", [array objectAtIndex:0]);
NSLog(@"%@", array[0]);
第一句代码,是另一个新的特性—字面量表示法,数组对象以后可以使用这种方式直接构建。
第二句和第三句代码等价,第三句代码就使用了下标表示法,这样看是不是比原来的写法简单多了。
这里要特别提一下,如果你开发的是MacOS的应用,那么下标表示法可以直接使用了。但是如果你开发的是iOS,那么很不幸,在Xcode4.4中还不能为开发iOS的应用,直接使用下标表示法。原因在于,iOS的SDK还没有像MacOS的SDK那样完整实现了所有新特性。不过,我们可以通过添加一个Category的方式来获取下标表示法的能力。代码如下:
@interface NSObject(subscripts)
- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- (id)objectForKeyedSubscript:(id)key;
@end
将这段代码封在NSObject+subscripts.h文件中,在需要使用下标表示法的文件中include即可。
警告:因为引入了这个头文件,所有的对象都自动获取了下标表示法的能力。但是并不是所有的对象都能正常运行下标表示法。一般情况下,容器类对象(如NSArray、NSDictionary等),可以正常运行。
以下代码可以正确执行。
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"foo"] = @"bar";
不能正确执行。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSLog(@"the value of key is %@", userDefaults[@"key"]);
分享到:
相关推荐
18. Objective-C与C/C++的混合编程:Objective-C与C语言兼容,因此可以轻松地在Objective-C程序中使用C代码。同时,它也能够与C++代码进行交互,但需要遵守特定的规则和约定。 19. Import指令:在Objective-C中,@...
1. **Objective-C简介**:介绍Objective-C的历史、特点和它在Apple生态系统中的地位,解释为什么它是iOS开发的首选语言。 2. **面向对象编程基础**:讲解类、对象、继承、多态和封装等面向对象编程的核心概念,帮助...
Objective-C是一种强大的面向对象的编程语言,特别是在iOS和macOS应用程序开发中占据核心地位。"Objective-C编程全解最新版.pdf.zip"这个压缩包显然包含了关于Objective-C编程的全面教程,旨在帮助开发者深入理解并...
在本教程中,我们将深入探讨如何在Mac OS上使用Xcode 3.0和Objective-C实现基于NSURLDownload的网络下载功能。 首先,NSURLDownload是Foundation框架的一部分,它允许开发者在后台线程中异步下载文件。这个特性对于...
Objective-C是一种强大的面向对象编程语言,它在Apple的Mac OS X和iOS操作系统中扮演着核心角色,用于构建高质量的应用程序。《Objective-C程序设计 第6版》是学习和深入理解这种语言的重要参考资料,旨在帮助开发者...
《Objective-C 程序设计(第4版)》已经为iOS 5和Xcode4.2中的重大变更做了全面更新,最大的改动是引入了自动引用计数(ARC),并详细说明了如何在Objective-C编程过程中使用ARC提升和简化内存管理。
在Objective-C中使用C++是iOS和Mac开发中常见的技术结合,因为Objective-C是Apple的主推编程语言,而C++则是一种强大的、通用的面向对象的语言,尤其适合处理底层计算和高性能的需求。这篇博客(<https://eric-gao....
3.2 在面向对象的编程中使用间接24 3.2.1 过程式编程24 3.2.2 实现面向对象编程29 3.3 学习有关的术语33 3.4 Objective-C中的OOP34 3.4.1 @interface部分34 3.4.2 @implementation部分38 3.4.3 实例化对象40 ...
- **封装C/C++库**: 通过Objective-C的桥接机制,可以轻松地将现有的C/C++库封装成Objective-C的类或框架,从而方便地在iOS应用中使用。 #### 六、Objective-C的未来展望 尽管Swift已经成为iOS开发的新宠,但...
此外,可能会对比两种语言的类系统,解释如何在Objective-C中使用C++代码,以及如何在C++项目中集成Objective-C。 通过阅读这三本书,读者将全面了解Objective-C的各个方面,从基础语法到高级特性和最佳实践。无论...
Objective-C是Cocoa的主要编程语言,它扩展了C语言,引入了面向对象的特性,如消息传递和类别。 本书首先会引导读者了解Objective-C的基础,包括语法、类、对象以及内存管理。然后,它会深入Cocoa的核心组件,如...
在实际开发中,Objective-C通常与Xcode IDE结合使用,通过Interface Builder设计用户界面,并利用Storyboard组织视图控制器的导航流程。Swift的出现虽然在一定程度上替代了Objective-C,但对于现有的大量Objective-C...
Objective-C是一种面向对象的编程语言,它主要被用于开发苹果的操作系统,如macOS和iOS。然而,描述中提到的GNUstep项目使得Objective-C的使用范围扩展到了非苹果平台,包括Windows操作系统。在这个场景下,我们关注...
Objective-C是一种强大的面向对象编程语言,特别是在苹果的iOS和macOS平台上广泛使用。"objective-c的计算器"项目是一个基础的编程练习,旨在帮助开发者理解Objective-C的基本语法和面向对象编程概念。在这个简易...
在Objective-C程序设计的最新版本中,已经针对最新的Xcode开发环境、iOS操作系统以及OS X Mavericks系统进行了重大升级。这种升级不仅包括了Objective-C语言的最新功能和技术,而且也包含了对新版Xcode、iOS和OS X ...
Objective-C是一种强大的面向对象编程语言,特别是在Apple的iOS和macOS平台上广泛使用。它是C语言的超集,融入了Smalltalk的关键概念,如消息传递和动态类型。《Learn Objective-C on the Mac》由Mark Dalrymple撰写...
"Using Swift with Cocoa and Objective-C(4.1)"是Apple官方发布的文档,旨在帮助开发者理解如何在同一个项目中有效地结合使用Swift和Objective-C。这份文档详细介绍了两者之间的差异、互操作性、以及混合编译过程中...