当前位置:主页 > 365bet官网体育投注开户 > 正文
  • id与NSObject和instanceType之间的区别
  • 日期:2019-04-19   点击:   作者:365bet官方平台开户   来源:365体育投注365bet
id是一个通用指针。也就是说,它可以指向任何对象。
NSObject *本身是指向NSObject类型的指针。
那两者有什么区别?
两者都可以用作返回值或修饰符。
主要区别在于ID修改的变量不遵循NSObject协议。
这显示了代理模式的实现差异。例如,在调用代理方法时,首先确定代理是否可以响应NSObject协议中定义的方法[objrespondsToSelector:]。
那么为什么Apple以后会使用instancType呢?
我认为有两个主要原因。
第一个问题是名称。许多数据库设计都有一个识别字段。
(当然,你现在不能使用它)。
其次,instancType只能用作方法返回值,而不能用作变量。
当它作为一种方法返回时,它和id之间的主要区别是什么?
举个简单的例子。
NSString * str =[Person];
NSLog(@“%lu”,str。
长度);
在前面的代码中
[Person]返回标识类型的值。编辑代码时,Xcode不会报告错误或警告。执行时间被阻止(因为OC是一种真实类型的动态检测对象)。相反,如果返回值为instanceType,则xcode会发出警告。
因此,在编写类的方法时,如果类型为id,建议使用instanceType作为返回值。