XCode6.1-Objective-C新版特性.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
XCode6.1-Objective-C新版特性 XCode6.1中的Objective-C新特性: instancetype关键字: id类型: id类型对于Oc来讲,是一种万能类型,可以把所有的继承自NSObject的对象,转换成id类型。但id类型本身并不检查对象的真实类型,导致在编译时并不检查调用的方法是否为该类的成员方法,而在运行时可能会引起异常。 如以下实际代码: 头文件中: @interface IdAndInstancetype : NSObject +(id) ObjectFactoryID;//静态工厂方法,返回id类型的对象指针 @end 源文件中: @implementation IdAndInstancetype +(id) ObjectFactoryID { return [[[self class] alloc] init]; } @end 在main函数中使用该方法: id objID = [[IdAndInstancetype ObjectFactoryID] init]; [objID count]; 缺陷:以上代码在编译时,调用count方法这一句并不会给出警告或错误,因为id类型并不检查对象的实际类型。而在运行时由于对象实际上是IdAndInstancetype类型的,但它内部并没有count方法,因此会报出异常错误中断程序的运行! instancetype类型: ①定义: instancetype类型是新版本Oc中增加的关键字,它的含义是实例对象的实际类型。编译器会在将某对象的类型为instancetype时,会自动转换为该实例的“真正类型”。 注意,instancetype只应该在alloc、init和工厂方法的返回值类型中使用,不要再其它的代码中用它。 比如这样使用instancetype是不正确的: instancetype obj;//编译错误,instancetype不是真正的“类型” id obj;//正确,id是一种类型 ②instancetype的一般用法: 头文件中添加新的工厂方法: @interface IdAndInstancetype : NSObject +(id) ObjectFactoryID; +(instancetype) ObjectFactoryInstancetype; -(void) methodFather;//添加一个父类的成员方法 @end 原文件中添加方法的实体: +(instancetype) ObjectFactoryInstancetype { return [[[self class] alloc] init]; } //同时也添加父类成员方法的实体 -(void) methodFather { NSLog(@%@, @super class method!); } 注意:上述代码中的[self class],据官方文档说明,class方法会返回“类对象”,代表了当前对象所属的类。 在main函数中使用时: A、错误用法: [[IdAndInstancetype ObjectFactoryInstancetype] count]; 会提示IdAndInstancetype没有count成员的编译错误! B、正确用法: 假设有子类名叫SubClass,它继承了IdAndInstancetype的工厂方法,并且有自己的成员方法: 头文件: @interface SubClass : IdAndInstancetype -(void) methodSon; @end 源文件: @implementation SubClass -(void) methodSon { NSLog(@%@, @sub class method!); } @end main函数中: [[IdAndInstancetype ObjectFactoryInstancetype] methodFather]; //该工厂方法会返回父类型,因此不能够访问子类的成员方法methodSon [[SubClass ObjectFactoryInstancetype] methodSon]; //该工厂方法会返回子类型,因此够访问父类和子类的成员方法methodFather 、methodSon @property关键字 定义: property是用来捕获对象的状态。它们反射出对象的内在属性以及和其他对象的关系。它提供了一个安全的、便捷的方法,以便我们访问对象的属性,而不需要写出各种访问方法(getter、setter)。 使用@property关键字有以下几点好处: 自动的实现getter和seeter方法:当你声明了pr

文档评论(0)

dsdmlwz1v9 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档