/*id 被称为指向任何OC对象的指针,有点类似于Java中的Object对象*/
/*声明了一个指正对象 指向了字符串 我们来看看能不能调用字符串方法*/
id obj = @"张三";
//是可以的 因为在编译期间 编译器已经确定 obj指向的是一个字符串
[obj stringByAppendingString:@"abc"];
//我创建了个类初始化对象返回是ID
NSString* isstring = [[Person alloc] initPerson];
/*
我们来看看调用方法 在编译的时候是可以调用
因为此对象返回是ID 我让字符串接受 骗过编译器以为真的是字符串 所以能调用
不过在真正的运行的时候会报错! 因为他真正指向的是Person 因为Person没有这个方法
所以挂了 OC是动态检测对象的真实类型;
*/
[isstring stringByAppendingString:@"张三"];
/*
instancetype 只能修饰方法返回值 不能修变量 他去ID区别在那里?
当其返回值为instanceType时,xcode则会报出警告.
所以,建议写类的方法时,对于返回值,如果是id类型的话,尽量使用instanceType.
看如下案例
*/
//此时已经发出警告 编译已经发现 他需要的是一个Person指针 然而你赋值给字符串 所以抛出警告 new_person 初始化对象返回Instancetype
NSString *isstrin1 = [[Person alloc] new_person];
/*纯属个人理解 有不对的地方希望大家指出! */OC-ID类型和instanceType区别
最新推荐文章于 2025-09-09 19:58:03 发布
本文探讨了Objective-C中id与instancetype的区别与联系。通过实例演示如何使用这两种类型,并解释了它们在编译期和运行期的行为差异。此外,还讨论了如何避免常见错误并给出了最佳实践建议。
1650

被折叠的 条评论
为什么被折叠?



