Checklists学习日志之Cocoa、Foundation框架的概念,UIString和String的使用

来源:互联网 发布:中控指纹仪java开发包 编辑:程序博客网 时间:2024/05/14 17:22

    看Checklists教程的时候,随处可见以UI开头的变量,对UIString和String的使用一直没搞清楚,今天略微知道了一点点概念,记一下。

    学习C语言的时候,我们都学的是一些语法,当时并不知道真正的软件是如何由这些语法写出来的。其实除了基本的语法以外,我们需要学习一些开发的框架。框架这个概念比较抽象,但是由于老本行是搞科研,涉及一些DSP,所以有大量的使用Matlab使用的经验。现在我对框架的理解,就类似于Matlab中函数的集合。把Matlab中所有的函数放在一起,我们说这是Matlab的框架。当然Matlab的框架主要用于科学计算。 

    当我们开发iOS应用的时候,我们需要用到的这样的框架苹果给了给名字,叫做,Cocoa。Cocoa是用Objective-C开发的。事实上Cocoa本身是一个框架的集合,它包含了众多子框架,其中最重要的要数“Foundation”和“UIKit”。前者是框架的基础,和界面无关,其中包含了大量常用的API(Application Programming Interface,应用程序编程接口);后者是基础的UI类库,以后我们在IOS开发中会经常用到。这两个框架在系统中的位置如下图:


    而对于Foundation本身,它包含了众多的可以使用的函数和对象。这些对象的根对象都是NSObject,NSObject就处在Foundation框架之中,部分类结构如下:


    可以看到,这些类的名字都以NS开头。NS是Foundation框架的标准前缀,来由是乔帮主的NEXTSTEP,即OSX的前身。

    在swift中,我们不再使用NSString,而用String。String 和 NSString 有着良好的互相转换的特性,但是现在 Cocoa 所有的 API 都接受和返回 String 类型。我们尽量使用原生的String。但是,当我们做某些操作不方便时,可以考虑使用NSString。使用 String 唯一一个比较麻烦的地方在于它和 Range 的配合。在 NSString 中,我们在匹配字符串的时候通常使用 NSRange 来表征结果或者作为输入。而在使用 String 的对应的 API 时,NSRange 也会被映射成它在 Swift 中且对应 String 的特殊版本:Range<String.Index>。这有时候会让人非常讨厌。一般来说,我们可能更愿意和基于 Int 的 NSRange 一起工作,而不喜欢使用麻烦的 Range<String.Index>。这种情况下,将 String 转为 NSString 也许是个不错的选择:

let nsRange = NSMakeRange(1, 4)(levels as NSString).stringByReplacingCharactersInRange(    nsRange, withString: "AAAA")
    我的理解是,NSString算是OC时代的遗存。伴随Swift的强大,我们以后可以不用之用NSString而只用String。
    



0 0
原创粉丝点击