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。
- Checklists学习日志之Cocoa、Foundation框架的概念,UIString和String的使用
- Checklists学习日志之枚举的概念
- Checklists学习日志之protocol和delegate的使用
- Checklists学习日志之prepareForSegue方法的使用
- Checklists学习日志之再看prepareForSegue方法的使用
- Cocoa Foundation 框架:NSString字符串的使用
- Cocoa Foundation 框架:NSNumber的使用
- Cocoa Foundation 框架:NSArray数组的使用
- Cocoa Foundation 框架:NSDictionary字典的使用
- Cocoa Foundation 框架:NSSet集合的使用
- Checklists学习日志之建立存储文件用的地址
- Checklists学习日志之创建UITableViewCell的一般方法
- Checklists学习日志之prepareForSegue方法的替代
- IOS之Core Foundation框架和Cocoa Foundation框架区别
- IOS之Core Foundation框架和Cocoa Foundation框架区别
- IOS之Core Foundation框架和Cocoa Foundation框架区别
- Checklists学习日志之@UIAPPLICATIONMAIN
- Checklists学习日志之使用NSUserDefaults存储数据
- Facebook登录
- go语言 robfig/cron包 实现定时 调用
- Frustum Culling in OpenGL视锥体裁剪剔除
- Xcode升级后,插件无法工作的问题
- c++学习(三)
- Checklists学习日志之Cocoa、Foundation框架的概念,UIString和String的使用
- 58. 格式化字符串
- UILongPressGestureRecognizer的介绍
- Unreal Engine 4 蓝图脚本学习 添加脚本使actor来回移动 (2)
- 解决spring、springMVC重复扫描导致事务失效的问题
- cocos2dx游戏资源加密之XXTEA
- 推荐些好的博客和iOS学习网站(有的需要CrossingWall)
- 剑指Offer-19-二叉树的镜像
- RAC 11g的基本概念四