1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 Cocoa 框架 MASShortcut 的 fork 版发布 下载

本帖由 漂亮的石头2014-11-07 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    很多时候我们在编写Mac下的应用时(其实不光光是Mac应用),都会需要提供全局快捷键或者局部快捷键的设置选项,比如全局呼出我在我之前的一个app:Oh My Cal!中实现的全局呼出功能。Cocoa中并没有类似NSGlobalShortcut这样的类让你很方便地设置全局快捷键,所以我在实现该功能时,不得不调用Carbon中的纯C函数,你可以在这里看到我在Oh My Cal!中实现全局呼出的代码。嗯,纯C的,不管怎么看和Objective-C的API相比还是有点丑陋,而且很麻烦。

    懒惰是程序员的美德,所以自然有人出头解决这个问题:MASShortcut是一个由著名的Mac下的代码收集应用CodeBox的作者Vadim Shpakovski所编写的框架,其用于代替过于陈旧的ShortcutRecorder,来为Mac下的应用提供全局快捷键支持。

    该框架使用Objective-C编写,适用于Mac应用。

    [​IMG]

    [​IMG]

    [​IMG]

    我最近在GitHub上fork了这个repo,并对源码进行了改进,你可以在这里查看改进后的源码:


    • MASShortcut的架构设计非常棒,但是原作者的代码风格实在太烂,所以我对所有的源代码重新进行了格式化(不然没法愉快地阅读)。同时为了方便其他人理解代码所表达的想法,我还在阅读代码的过程中,在之前的基础上添加了不少注释。


    • 为快捷键记录器增加了一个recessed风格的绘制。


    • 将一些已经被Apple文档声明为deprecated的方法或函数改写为modern API。


    • 改善了错误处理模块。


    • 在我的fork版本中修复了一个内存泄漏的bug,但由于我以我的编码风格对源代码进行了大量的格式化,所以并没有提交pull request,而是给原作者开了一个issue报告了该bug,并且他采纳了我的建议,修复了这个内存泄漏的bug。你可以在这里找到该issue。


    • 更多微小的改进,你可以在GitHub上diff看看。

    [​IMG]

    原作者编写的MASShortcut是一个ARC版本,但是我的fork版本是一个非ARC版本。另外,原作者为了该框架的使用者更容易地了解如何使用,专门写了一个demo,你可以在这里找到。同样,这个demo也是ARC版本的,并且该demo只是演示了界面方面的API用法,对于注册全局快捷键等其他功能并没有进行演示,所以我单独写了一个demo,来帮助该框架的使用者和代码阅读者更轻松一点,你可以在这里找到这个我写的demo(非ARC)。

    How to use?


    虽 然MASShortcut是一个Cocoa框架,但是为了增强灵活性,并没有被编译成二进制的bundle,而是直接以源代码文件的形式发布,再由使用者 以Git中的submodule的形式集成到自己的项目中。在你的项目目录中运行如下Git命令即可将MASShortcut集成到你的项目中:git submodule add https://github.com/TongG/MASShortcut

    这样很方便,同时我在上游做出任何改进,你只需pull即可使用最新版的代码。 MASShortcut的源码文件会被clone到你的项目目录中,这是别忘了还要在Xcode中进行Add Files to {PROJECTNAME}...。

    Build Environment:


    • OS X 10.9.5 (13F34)


    • Xcode 5.1.1 (5B1008)


    • Objective-C 2.0 without ARC

    文章开头的三幅截图是我的fork版本的运行截图。如果你在使用中遇到任何问题,可以联系我或者原作者Vadim Shpakovski(当然我的中文要比他好一些)。


    如果你遇到任何问题,你可以给我发送邮件:Tong-G@outlook.com或者在Twitter上DM我:@NSTongG

    如果你使用GnuPG的话,也可以给我发送加密数据,我的GnuPG公钥为0x67B9E95236924648,你可以从公钥服务器上retrieve之。
    Cocoa 框架 MASShortcut 的 fork 版发布下载地址
     
正在加载...