• 2019-02-21

    用 libtool 合并两个静态链接库

    Views: 23728 | 1 Comment
    libtool -static -o new.a old1.a old2.a
    
    Posted by ideawu at 2019-02-21 10:53:26
  • 2019-02-20

    Xcode 静态链接库找不到的问题

    Views: 20329 | No Comments

    如果你的 Xcode 程序编译正常,但执行时遇到类似的报错:

    +[NSCharacterSet SVGWhitespaceCharacterSet]: unrecognized selector sent to class
    

    这种问题是因为静态链接库中的 Objective-C 的 Category 符号没有被链接进你的程序。你可以用下面的命令看看符号有没有被链接:

    nm Cli | grep SVGWhitespaceCharacterSet
    

    网上说你可以在 Other Linker Flags 里增加 -ObjC,但如果你的项目还要用别的非 OC 的库,则会报错,例如你同时使用 C++ 库。正确的做法是,在 Other Linker Flags 里增加

    -force_load $(PROJECT_DIR)/...../libxxx.a
    

    -force_load 后面跟绝对路径。

    Posted by ideawu at 2019-02-20 19:44:17
  • 2019-02-20

    Xcode项目添加libxml

    Views: 24070 | No Comments

    把 /usr/include/libxml2 添加到 header search path

    Posted by ideawu at 18:04:09
  • 2019-02-19

    Mac defaults 存储路径

    Views: 18634 | No Comments

    non-sandboxed:

    ~/Library/Preferences/com.example.myapp.plist

    sandboxed:

    ~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist

    defaults 命令只能读取 sandboxed 的。

    但是,Xcode 调试时运行的 app,defaults 存在哪个目录呢?我也不知道。

    Posted by ideawu at 2019-02-19 19:11:33
  • 2019-02-16

    苹果Cocoa框架中关于NSView和NSViewController的关系

    Views: 18883 | No Comments

    开始接触苹果的 GUI 框架时,经常对 NSView/UIView 和NSViewControoler/UIViewController 的关系感到疑惑,因为包括 Windows 界面开发在内的很多GUI框架,都只有 View,而没有 ViewController 的概念。而且在很长一段时间的实际使用中,也经常感到 ViewController 是多余,特别是开发自定义 View,逻辑代码者写在 View 类中更方便。

    虽说 View 和 ViewController 是 MVC中 的概念,但我想从内存管理的角度来说说为什么 ViewController 必须存在。假设在这样的场景,这一个用户界面,上面随机地生成不定数量的框,然后把我们的 subview 添加到其中一个框里面。因为这些框是随机生成的,所以某一个代码框的对象可能在生成之后又被销毁了。如果这个框对象(也即 subview 的父节点)在被销毁时,也把 subview 销毁,那就不符合预期了。同时,也不能在销毁框之前把 subview 从框中移除,因为从代码逻辑上这样的实现并不优雅,而且违反很多代码的逻辑。

    所以,subview 的内存应该次给父节点之外的其它对象管理,自然而然地想到给 subview 创建一个 ViewController,逻辑上表示 View 属于 ViewController,由后者管理其内存,这样逻辑上比较通。不然只能交给业务代码管理,这样逻辑上不太合理。

    同时,允许存在不属于任何一个 ViewController 的独立的 View,实践上需要这种规则,例如我们动态地给某个父节点添加子节点,并且希望在销毁父节点时自动销毁子节点,因为这样代码更简洁。

    所以,有两个动机:

    1. 希望有些情况下销毁父节点时,不自动销毁子节点。
    2. 希望有些情况下销毁父节点时,自动销毁子节点。

    解决方案是 ViewController 和引用计数。

    这是 GUI 框架设计的一种思路。

    Posted by ideawu at 2019-02-16 22:32:55
  • 2019-02-15

    Mac 修改登录界面的语言

    Views: 7382 | No Comments

    新的 MacBook Pro 系统选择语言或者地区为中文/中国之后,即使我的常用账号选的是英文,登录界面显示的还是中文,而且,重启电脑时,系统提示的也是中文。

    如果要修改,只能通过命令行,在 System Preferences 里无法修改。命令:

    sudo languagesetup
    
    Posted by ideawu at 2019-02-15 10:57:13
|<<<34567891011>>>| 7/129 Pages, 773 Results.