在 Xcode 4.4 和 iOS 4.3+ 中使用下标语法
2013-10-04 12:30
309 查看
原文: http://petersteinberger.com/blog/2012/using-subscripting-with-Xcode-4_4-and-iOS-4_3/ Xcode 4.4 GM 版本发布,你可以在 4.4 中使用新的“下标”语法。苹果将在新的OSX 和 iOS 版本中引入这个特性,但还得等等。下列代码段摘自 PSPDFKit,它使你现在就能使用这个特性:
// Add support for subscripting to theiOS 5 SDK.
#if __IPHONE_OS_VERSION_MAX_ALLOWED< 60000
@interface NSObject(PSPDFSubscriptingSupport)
-(id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)objatIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)objforKeyedSubscript:(id <NSCopying>)key;
- (id)objectForKeyedSubscript:(id)key;
@end
#endif
这种处理过于简单了,无论你在任何对象上调用下标语法,Xcode 都不会报错。但你忍不住会问,这样行不行啊?当然,这只是临时的措施,仅仅是为了通过Xcode 4.4 的编译。
在 Xcode 4.5 中,这段代码没有任何意义,因为新的 SDK 已经定义了这些方法。确保在全局头文件(例如.pch文件)中引用这些代码。
注意,这不同于枚举。枚举已经是一种真正的语法糖,枚举已经内置在 Xcode4.4+(LLVM 4.0+)中。下标实际上是调用了新的方法。那么这段特殊的代码(只有方法定义,没有实现)是怎么起作用的?
感谢 Mike Ash 和Cédric Luthi 的解释:
实际上,下标索引已经包含在 ARCLite 中了。ARCLite 的load 函数用 class_addMethod 动态地加了 4 个方法。在这些方法的实现中,实际上是简单地调用了非下标方法而已。
// objectAtIndexedSubscript: method isimplemented like this:
id__arclite_objectAtIndexedSubscript(NSArray *self, SEL _cmd, NSUInteger idx)
{
return [self objectAtIndex:idx];
}
如果你因为某些原因,不能使用 ARC,你只想强制让编译器连接到libarclite,那么可以使用
-fobjc-arc连接标志。这将可在 iOS4.3 中生效。
最好,下载新的 Xcode Refactoring Assistant 将你的代码转换为最新的O-C 代码。
// Add support for subscripting to theiOS 5 SDK.
#if __IPHONE_OS_VERSION_MAX_ALLOWED< 60000
@interface NSObject(PSPDFSubscriptingSupport)
-(id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)objatIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)objforKeyedSubscript:(id <NSCopying>)key;
- (id)objectForKeyedSubscript:(id)key;
@end
#endif
这种处理过于简单了,无论你在任何对象上调用下标语法,Xcode 都不会报错。但你忍不住会问,这样行不行啊?当然,这只是临时的措施,仅仅是为了通过Xcode 4.4 的编译。
在 Xcode 4.5 中,这段代码没有任何意义,因为新的 SDK 已经定义了这些方法。确保在全局头文件(例如.pch文件)中引用这些代码。
注意,这不同于枚举。枚举已经是一种真正的语法糖,枚举已经内置在 Xcode4.4+(LLVM 4.0+)中。下标实际上是调用了新的方法。那么这段特殊的代码(只有方法定义,没有实现)是怎么起作用的?
感谢 Mike Ash 和Cédric Luthi 的解释:
实际上,下标索引已经包含在 ARCLite 中了。ARCLite 的load 函数用 class_addMethod 动态地加了 4 个方法。在这些方法的实现中,实际上是简单地调用了非下标方法而已。
// objectAtIndexedSubscript: method isimplemented like this:
id__arclite_objectAtIndexedSubscript(NSArray *self, SEL _cmd, NSUInteger idx)
{
return [self objectAtIndex:idx];
}
如果你因为某些原因,不能使用 ARC,你只想强制让编译器连接到libarclite,那么可以使用
-fobjc-arc连接标志。这将可在 iOS4.3 中生效。
最好,下载新的 Xcode Refactoring Assistant 将你的代码转换为最新的O-C 代码。
相关文章推荐
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.3 4.4 中使用 Three20
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- 在xcode 4.2.1中使用skd 5.0 编译出在ios 4.3或者其他版本里面可以用的应用
- 使用Xcode开发iOS语法检查的Clang插件
- ios高效开发-使用字面量语法让iOS代码更简洁漂亮
- iOS开发------使用Xcode编译器定位抛出异常的位置
- [转]使用Xcode和Instruments调试解决iOS内存泄露
- XE7 & IOS开发之开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相)
- iOS开发74-XCode(7.3.1)使用Instruments(7.3.1)测试内存泄漏例子(循环引用)
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
- iOS开发:使用Xcode创建最简单的代码
- Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
- XCode 4.3 不使用新特性 适用低版本的的项目 不是初学者就可以跳过了