Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
什么&x2019;Xcode、Objective-C和Cocoa之间的区别是什么?_Objective C_Xcode_Cocoa Touch_Cocoa - Fatal编程技术网

什么&x2019;Xcode、Objective-C和Cocoa之间的区别是什么?

什么&x2019;Xcode、Objective-C和Cocoa之间的区别是什么?,objective-c,xcode,cocoa-touch,cocoa,Objective C,Xcode,Cocoa Touch,Cocoa,这个问题经常出现在这里,即使只是在用户误提他们的iOS问题时隐式出现。那么,Xcode、Objective-C和Cocoa之间有什么区别呢?Objective-C是一种编程语言。可以说,这只是对有效的Objective-C程序的描述,以及它们的含义。如果您有一个用Objective-C编写的源代码清单,那么您需要一个解释器或编译器来运行该清单。像Objective-C这样的语言通常是编译的,所以大多数人都使用编译器(比如)。Objective-C几乎完全用于为iOS和OSX开发,但也有其他用途—

这个问题经常出现在这里,即使只是在用户误提他们的iOS问题时隐式出现。那么,Xcode、Objective-C和Cocoa之间有什么区别呢?

Objective-C是一种编程语言。可以说,这只是对有效的Objective-C程序的描述,以及它们的含义。如果您有一个用Objective-C编写的源代码清单,那么您需要一个解释器或编译器来运行该清单。像Objective-C这样的语言通常是编译的,所以大多数人都使用编译器(比如)。Objective-C几乎完全用于为iOS和OSX开发,但也有其他用途——例如,有些人为Linux编写Objective-C

您可以使用文本编辑器编写源代码,并使用编译器将其转换为实际的程序,但使用现代技术,需要处理的事情更多,因此有另一个程序可以使您的工作更轻松。这些被称为集成开发环境,或IDE。IDE为您提供了编辑源代码、编译源代码、调试生成的程序、阅读文档以及许多其他内容的方便方法。Xcode就是这样一个IDE。这里一个重要的观察结果是,Xcode本身并不编译源代码,它只调用独立编译器(LLVM)。Xcode并不是唯一一个可以用来开发Objective-C应用程序的IDE——例如,有

每次从头开始编写iOS或OSX应用程序都非常耗时。这就是为什么苹果为开发者提供了一套很好的库。这些库只是苹果编写的大量源代码,这些源代码处理了应用程序的大部分共同点。这些库称为Cocoa

现在,如果您不知道如何扩展一个类,您很可能在谈论Objective-C。它与Xcode或Cocoa没有任何关系,您可以很好地使用Vim作为IDE,使用GCC作为编译器为Linux编写一些代码。另一方面,如果您的Xcode构建过程由于某些神秘的设置而失败,或者如果您试图在Xcode中构建静态库,那么这显然是Xcode的问题。如果您不知道如何使用某些NSObject工具或NSFileManager类,那就是Cocoa。(但它不必与Xcode相关,因为您可以使用AppCode或TextMate作为IDE!)



。重新标记或解释差异时,请随时链接到博客帖子或此问题。

Xcode是集成开发环境(IDE)——开发人员用于为iOS和/或OS X编写软件的应用程序。它包括编辑器、构建系统(确定构建什么以生成所需目标),还有很多其他的事情

Objective-C是开发人员编写此类软件的主要语言。他们可以用纯C++编写它的位,使用C++或将其与Objtovi-C(Objule+C++)结合,或者用另一种语言完全地编写程序的全部或全部,例如MaRube、java(带有J2Objc)或C(MonoTouch)。 Xcode包括Clang编译器,它将用Objective-C、C和其他一些语言编写的代码转换为可执行代码。大多数错误消息来自Clang,Xcode在搜索索引、语法突出显示和Objective-C代码的名称完成方面严重依赖它

Cocoa和Cocoa Touch是应用程序框架。每一个框架都是许多单独框架(存储在名为blahblah.framework的文件夹中的库)的套件,例如:

  • 基础(两者):通用面向对象实用程序,包括NSString、NSURL、NSFileManager等。
    • 核心基础(两者):基本相同,但不同,主要有基于C的API,而不是Objul-C
  • 应用程序工具包(Mac):应用程序和窗口框架
  • UIKit(iOS):应用程序和窗口框架
  • 核心图形(两者):绘图
  • 核心动画(两者):精灵管理和动画框架
(他们来自的地方越来越多,尤其是在Mac电脑上)

因此:

  • 除了Cocoa或Cocoa Touch之外,您还可以使用框架,但您必须在某种程度上拥有一些Cocoa/Cocoa Touch代码,以便应用程序与系统对话、接收事件、绘制等。专门针对Mac和/或iOS的框架将为您提供不同质量级别的相关包装
  • 您可以使用Objective-C之外的语言,但会有很多语法上的尴尬,因为大多数Cocoa和Cocoa Touch都是为Objective-C独特的语法功能(特别是选择器)而设计的
  • 你可以使用Xcode之外的编辑器,甚至可以使用Xcode之外的构建系统(如make),但苹果的应用商店希望应用以特定的方式构建(特别是在代码签名方面),因此除非你不是针对应用商店,任何其他构建系统都必须复制Xcode的功能,否则其用户将面临被拒绝的风险

    • 一个明显的错误是未能将Xcode与其他任何东西区分开来。Xcode是您用来编程的工具,用于编辑代码、运行代码等。因此,如果您在使用该工具时遇到问题(例如,窗口无法正确显示代码,或者您在绘制界面等方面遇到问题),这就是Xcode问题

      如果您不理解代码为什么不能工作,那么您可能遇到了Objective-C问题或Cocoa问题。但你不一定知道是哪个

      • 如果问题的根源是您不知道该语言是如何工作的(例如,您不知道星号代表什么,或者该声明不是实例化,或者发送给nil的消息不会出错,但也不会执行任何操作),那么这就是Objective-C问题

      • 如果您不掌握委托体系结构或视图控制器的工作方式,这将是一个问题

      但是我的经验