代码之家  ›  专栏  ›  技术社区  ›  Ray Lu

ns在nsstring中代表什么,在cocoa objective-c中代表nsxmlparser[重复]

  •  0
  • Ray Lu  · 技术社区  · 16 年前

    cocoa/cocoa touch中的许多类都有ns前缀。这是什么意思?

    0 回复  |  直到 7 年前
        1
  •  428
  •   Basil Bourque    12 年前

    它来自 NeXTSTEP 传统。

        2
  •  768
  •   Walid    8 年前

    Cocoa框架的原始代码来自 NeXTSTEP 图书馆基金会和AppKIT(这些名字仍然被苹果的COCOA框架使用),而NeXPeST工程师选择用NS预置他们的符号。

    因为Objto-C是C的扩展,因此没有像C++那样的命名空间,所以符号必须用唯一的前缀前缀,这样它们就不会发生冲突。这对于框架中定义的符号尤其重要。

    如果您正在编写一个应用程序,这样您的代码就只可能使用您的符号,那么您不必为此担心。但是,如果您编写的是供他人使用的框架或库,则还应为符号添加唯一前缀。 CocoaDev has a page Cocoa社区中的许多开发人员已经列出了他们的“选择的”前缀。你也可以找到 this SO discussion 有帮助。

        3
  •  147
  •   rjmunro    13 年前

    n 提取 S TEP或 n 下一步/ S 不取决于你问的是谁。

    Sun在OpenStep上有一段时间投入了相当大的资金。在太阳进入图片之前,基金会中的大部分东西,即使它不被称为当时的基础,也是前缀。 氮氧化物 ,为了 n e X 在太阳进入图片之前,一切都被重新命名为 纳秒 . 这个 S 当时最有可能不代表太阳,但在太阳步入普遍共识之后,它代表太阳尊重他们的参与。

    我确实有这个的参考资料,但现在找不到。如果我再次找到这篇文章,我会更新它。

        4
  •  52
  •   NANNAV gngrwzrd    13 年前

    这是下一步的遗产。其次是史蒂夫·乔布斯1985年离开苹果后成立的计算机公司,NextStep是一家基于Unix的操作系统,以及obj-c语言和运行时。与它的库和工具一起,nextstep后来被重新命名为openstep(它也是下一次与sun一起开发的API上的名称),而后又成为cocoa。

    这些不同的名称实际上非常令人困惑(特别是由于某些名称只在字符大小写为大写或小写的情况下有所不同),请尝试以下说明:

    TheMerger OpenstepConfusion

        5
  •  41
  •   Jonathan Lin    13 年前

    来自苹果开发者文档:

    历史记录:如果你想知道为什么你遇到的那么多类有一个ns前缀,那是因为可可和可可接触的历史。Cocoa的诞生始于收集的框架,这些框架用于为NextStep操作系统构建应用程序。1996年苹果收购NextStep时,NextStep的大部分内容都被整合到了OSX中,包括现有的类名。CocoaTouch是作为Cocoa的IOS等价物引入的;虽然每个平台都有大量独特的类,但CocoaTouch和CocoaTouch中都提供了一些类。 苹果保留了两个字母前缀,如ns和ui(用于iOS上的用户界面元素)。

    资料来源: Programming with Objective-C

        6
  •  22
  •   chown    13 年前

    Cocoa_(API) Wikipedia :

    (增加了强调)

    Cocoa类以首字母缩略词开头 “NS” (代表 下一个太阳创建OpenStep 或原始专有条款 对于OpenStep框架, 下一步 ):nsstring、nsarray等。

    基础工具包 或者更简单地说 基础 ,首次出现在 打开步骤 . 在Mac OS X上,它是建立在核心基础之上的。基金会是 提供字符串和值的通用面向对象库 操作、容器和迭代、分布式计算、运行 循环和其他不直接绑定到图形的函数 用户界面。 “ns”前缀 ,用于中的所有类和常量 框架,来自 可可的开放式遗产 开发人 接下来 太阳 .

        7
  •  11
  •   user23743    17 年前

    当next定义nextstep api(与nextstep操作系统相反)时,它们使用前缀nx,就像nxconstantstring中那样。当他们使用Sun编写OpenStep规范时(不要与OpenStep操作系统混淆),他们使用了ns前缀,就像在nsObject中那样。

        8
  •  6
  •   Community Mohan Dere    9 年前

    比尔·布格纳 aka @bbum, who should know ,发布在 CocoaBuilder mailing list in 2005 :

    在ns前缀发挥作用后不久,sun就进入了图片。在从nextstep 3.0迁移到nextstep 4.0(也称为openstep)的过程中,ns前缀出现在公共API中。4.0之前,a 少数符号使用nx前缀,但大多数类由 系统库根本没有加前缀--list、hashtable, 视图等…

    似乎每个人都同意在1993/1994年之前使用前缀nx(用于next),并且 Apple's docs say :

    1994九月发布的官方OpenStAPI API是第一个在基础和应用程序套件之间拆分API的程序,也是第一个使用E-S NS代码的前缀。

        9
  •  6
  •   Daniel Georgiev    9 年前

    基本上 纳秒 来自 n 提取 S TEP是苹果收购Next后,最初的Mac OS X操作系统。

    我想解释一些其他的事情,这就是为什么需要它。

    在C++中,有名字空间,几乎任何东西都在里面。 性病

    这就是为什么你有STD::字符串。

    使用了名称空间,因此很难出错,您可以编写自己的类字符串,而不会与系统字符串冲突。

    objective-c是c的超集,但它不包含名称空间,而且出于同样的原因,首先所有系统类都用ns或其他奇怪的prefix进行了prefix。

    这与所有DirectX类的预处理方式相同 D3D 以及如何使用 GL .

    这意味着你不应该使用 纳秒 当你看到 纳秒 , 加利福尼亚州 核心动画或 CG 在核心图形中,您理解这是对系统框架的调用。

    Swift改变了这一惯例,因为Swift支持名称间距,并将其核心类型(如字符串)映射到ns等价物。

        10
  •  1
  •   Ramprasath Selvam    9 年前

    下一步。这是“目标C”由下一个 编写nextstep(以后的OS X)和所有相关的应用程序等。 表示不属于原始C基础的元素, 例如,在c中没有“string”元素,所以在objective-c中, 它是一个额外的基础元素“NSCORE”。