小白学Mac之五:多线程和NSTextView

surefire 发布于 2015年11月02日 | 更新于 2015年11月02日
无人欣赏。

人还是很容易产生惰性啊,经过之前的一段时间后,对于写自己学Mac的经历好像失去了最初的兴致。今天简单记一下当时的需求或遇到的问题吧。

多线程的问题

一开始在设计数据库连接类时就考虑了多线程的问题,但由于一直不知道怎么在swift中实现回调的功能,所以作罢。直到在NSOutlineView中实现所有功能后,发现有时候连接数据库遇到网络不好的情况下程序会卡死——因为我是主线程里直接连接数据库,在公司的局域网里当然是没问题,遇到数据库挂了或者网络不行,那体验就不用说了。于是我考虑用多线程来做,一开始准备用NSThread来做,后发发现GCD这个东西(这个简称也真是汗了),试用了几次,发现GCD在这种场景下比NSThread来得更爽,于是改造了一番,卡死的问题解决了,还比较爽。具体用法就不多说了,网上一搜一大把。

以后有时间要仔细研究一下Mac下的多线程技术,毕竟用到的场景还是很多的。

查询窗体

后来用NSTextView控件来实现查询语句书写窗口时遇到一个很郁闷的问题,就是无法输入正常的双引号,不管是在英文还是中文输入状态下,敲入的双引号貌似都给转了一下,只能通过在其他文本里复制过来才行,搜了很多帖子也没找到方法,后来在一个论坛问了一下,有热心人提示了一下,设置NSTextView的automaticQuoteSubstitutionEnabled属性为false即可,关起门来造轮子就是不如跟大伙一起交流好,别人随便提示一下,节省好多自己查资料的时间。

现在对于NSTextView还没有做过多深入研究,主要是搞清楚怎么获取它的全部文本或者部分文本这么初级的用法。

TODO:

1.语法高亮。我打算以后深入研究了NSTextView功能后,实现SQL的语法高亮,不知道这个难度大不大?

2.查询这块实现多语句查询,这样必然用到多线程了

3.查询缓存,就是把用户之前输入过的查询语句缓存起来,程序起来时先读取,关闭时保存,这样就涉及到配置问题了,不知道用NSUserDefaults够用了不?

暂无回复
登录 或者 注册
相关帖子