Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C中(Object*)和(id)的差异_Objective C_Object - Fatal编程技术网

Objective-C中(Object*)和(id)的差异

Objective-C中(Object*)和(id)的差异,objective-c,object,Objective C,Object,请帮助我找出这两个代码段之间的区别: 在代码段中,Foo是从objc/Object.h中声明的对象派生的类 // Snippet 1 Object* o = [Foo new]; [o free]; // Snippet 2 id o = [Foo new]; [o free]; 谢谢 编辑 谢谢你的回答!让我分享一个我发现的链接,也许它会帮助那些遇到和我一样的问题并想更好地理解它的人: .id可以是任何类型,可以在没有警告的情况下响应系统中的任何消息。你是说NSObject*?是强类型的。

请帮助我找出这两个代码段之间的区别: 在代码段中,Foo是从objc/Object.h中声明的对象派生的类

// Snippet 1
Object* o = [Foo new];
[o free];

// Snippet 2
id o = [Foo new];
[o free];
谢谢

编辑 谢谢你的回答!让我分享一个我发现的链接,也许它会帮助那些遇到和我一样的问题并想更好地理解它的人:
.

id可以是任何类型,可以在没有警告的情况下响应系统中的任何消息。你是说NSObject*?是强类型的。编译器假定它只响应对象已知要响应的方法。

id可以是任何对象,并且可以在没有警告的情况下响应系统中的任何消息,因为它可以是任何类型。你是说NSObject*?是强类型的。编译器假定它只响应已知对象响应的方法。

谢谢您的回复!我的意思是,在对象下,类在Yeah中声明。Object是NeXTSTEP时代的旧根类,后来被NSObject取代。由于某些原因,Object.h仍然与Objective-C一起分发。您不应该将Object用于新的开发。NSObject应该是你的根类。谢谢你的回复!我的意思是,在对象下,类在Yeah中声明。Object是NeXTSTEP时代的旧根类,后来被NSObject取代。由于某些原因,Object.h仍然与Objective-C一起分发。您不应该将Object用于新的开发。NSObject应该是您的根类。这与此无关,但您可能希望从NSObject而不是Object继承。这与此无关,但您可能希望从NSObject而不是Object继承。