在程序中记忆窗口的位置,以便在下次打开的时候恢复记忆的位置。这对很多程序来说还是比较有必要的。方法很简单:
1 2 3 4 5 6 7 8 9 10 |
|
// 如果是手动保存,则需要手动恢复
1 2 3 |
|
// 清除记忆的位置
1 2 3 |
|
很简单吧。更多可以参考NSWindows Class Reference和Window Programming Guide文档。
(全文完)
在程序中记忆窗口的位置,以便在下次打开的时候恢复记忆的位置。这对很多程序来说还是比较有必要的。方法很简单:
1 2 3 4 5 6 7 8 9 10 |
|
// 如果是手动保存,则需要手动恢复
1 2 3 |
|
// 清除记忆的位置
1 2 3 |
|
很简单吧。更多可以参考NSWindows Class Reference和Window Programming Guide文档。
(全文完)
昨天心血来潮又把Lion装上了。这次是装到了移动硬盘里。效果良好。这次只要是为了看看Lion里Cocoa的新变化,顺道学习一下——虽然我对已有的Cocoa框架还没有熟悉。
打开最新的Xcode 4.1 DP5,很高兴的发现Popover已经成为一个标准控件。Popover在Xcode 4里用的很多。因为Popover现在非常流行,所以我就忍不住要测试以下。快速搜索了一下文档,发现Popover的文档暂时还没有进入Xcode的文档系统,所以只能硬着头皮,参考头文件里的文档,做了一个测试程序,感觉良好。 :)
因为Cocoa的数据类型之间的互转在实际程序中应用很广泛,而我经常都会忘记,因此在此记录一下常用的几个互转。以后将会补充更多。
1 NSData
和NSString
之间互转:
1 2 3 4 5 6 7 8 9 |
|
这里用NSUTF8StringEncoding
作为例子,实际可以使用更多其它的编码类型,详情可以参考文档。
Mac OS X上的绝大部分程序都使用Sparkle来作为程序的自动升级工具。利用Sparkle,用户无需对升级过程进行干涉,只需跟着升级指示做就可以了。而Sparkle对于程序开发人员来说,使用也是相当方便。其实Sparkle的文档已经写的相当好了,不过我还是来简单写一下Sparkle的使用,用于备忘。
首先到Sparkle的首页下载Sparkle框架。
然后按照和之前介绍Growl.framework的文章中同样的方法,新建一个Cocoa项目(或打开一个已有的Cocoa项目)把Sparkle加入项目中,在此我就不赘述了。
要让应用程序支持Sparkle很简单。大致分为3个大步骤:在项目中设置Sparkle;对升级包进行数字签名;设置AppCast服务器。(按:我正在用Rails编写一个AppCast服务器程序,能够简单方便的将这个过程自动化,等我测试完成之后将放到github上去。)
在之前一篇日志里,我简单的介绍了一下如何在项目中增加Growl.framework。现在,我来介绍一下如何使用Growl。在之前的日志里,我演示的时候,是往项目中加入Growl.framework,这次,为了完整起见,我将使用Growl-WithInstaller.framework来演示。
这两个框架的区别在于后者把Growl安装程序打包进了框架中。如果用户没有安装Growl,并且愿意安装,可以马上安装。但是很多人并不喜欢这种捆绑安装的方式,很多人把责任归咎于Growl,Growl甚至专门为此写了个网页解释。其实Growl是出于好意,并且,选择哪个框架是开发人员的事情。作为用户,如果你真的不喜欢Growl,Growl能够很方便的删除;而作为开发人员,应该根据目标用户谨慎选择捆绑Growl安装程序的包。
好了,题外话不多说,言归正传。
Growl是啥,用来干什么的我就不介绍了。Growl的文档说实话,写的挺抽象的。不是Step by Step的文档,对我来说就有点困难了。所以,我决定把Growl支持写成几篇短文,简单介绍一下如何在程序中增加Growl支持。【为啥要分几篇?嘛,因为我自己也是边学边写文章的吗。。。Orz】
首先,介绍一下原文是怎么写的。
- Download the frameworks from the Downloads page from there.
- Copy the Growl framework to your application’s project folder (or any subdirectory of it).
- Add the Growl framework to your project, making sure that all the relevant target checkboxes are checked. The header files in the framework use UTF-8 encoding.
- Add a Copy Files phase to your application’s target.
- Get Info on the Copy Files phase.
- Set the destination to “Frameworks”, with no subpath (clear the field).
- Drag the framework from the group tree into the Copy Files phase.
其实描述的听清楚的。奈何,我的理解能力太差,搞不定。俗话说,A picture worth a thousand words,所以我就以Xcode 4为例,把上述过程做一遍。(下面的编号基本对应上文中的1-7所述的步骤)