• 2019-02-20

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

    Views: 10581 | 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: 14720 | No Comments

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

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

    Mac defaults 存储路径

    Views: 10183 | 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: 10357 | 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: 5807 | No Comments

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

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

    sudo languagesetup
    
    Posted by ideawu at 2019-02-15 10:57:13
  • 2019-02-13

    Xcode修改编译输出的目录

    Views: 4051 | No Comments

    如果你修改项目自己的 Build Settings 里的 Build Products Path,这没用,因为编译输出的路径是 Xcode 的配置,不是项目的配置,所以你应该修改 Xcode 的偏好设置。

    1. 修改 Xcode 全局设置

    在 Preferences -> Location -> DerivedData 选择 Custom,然后按 Advanced 按钮。Build Location 将 Custom 选为 Relative to Workspace。

    2. 修改项目设置

    如果你只想改某个项目,则从 File -> Project Settings 里改。

    但是,无论你用哪一种方法,这个修改是不能放到项目的 git 代码库里的。这意味着,如果你换了台电脑,你还得重新设置一遍!

    Posted by ideawu at 2019-02-13 13:07:25 Tags:
|<<<123456789>>>| 2/124 Pages, 743 Results.