NSString 和 String 究竟 有什么区别 ?

在学习 Swift 编程语言的时候可能不会遇到这个东西,但是随着学习的深入,在你阅读他人的代码的时候,很可能你就会遇到这种NS类型,这时候你肯定会好奇,类似 StringNSString 到底哪里不同?似乎它们是完全一样的呀!而且,通过 as 这个关键字,我们也可以轻松的让数据在它们两者之间转换。

要说清楚NS类型,我们还得从当年的 NeXTSTEP 操作系统说起了:

NeXT 为了写这个操作系统,发明了 Objective-C。直到现在,苹果的所有操作系统和应用软件都是用这个语言编写。而且,为了方便开发者,还有了Cocoa框架。

我们都知道,OC 并不是一门独立的语言,它来自于 C 语言,就像是 C 语言的一个超集。所以它没有类似C++的命名空间,要避免冲突,那么就需要独一无二的前缀用来区别了,再加上比如说C语言是没有 String 这种类型的,那么自然而然就有了 NSString 这一类的类型名称了。

至于为什么是 NS

这就不得而知了,总之一直使用这个前缀就成了历史遗留问题,你可以在这个页面看到各种已知前缀。


 

而如今Swift要兼容OC,那自然就会兼容这些类型,你可以使用 Swift 的 String 类型,同样也可以使用 OC 的 NSString 类型——有时候后者有一些前者不具备的方法供你使用(比如说将字符串转为数字。)


 

延伸阅读

NeXTSTEP

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.