小编Bra*_*red的帖子

如何为NSAppearance制作"外观文件"?

我正在阅读Cocoa文档,并偶然发现了10.9 API中的一些新功能.

我收集的文档中,NSAppearance该类和相关协议NSAppearanceCustomization似乎是一种定制外观NSView及其后代的方法.

NSAppearance对象表示一个文件,该文件指定应用于应用程序中UI元素子集的标准或自定义外观.应用程序可以包含多个外观文件,并且 - 因为NSAppearance符合NSCoding - 您可以使用Interface Builder将UI元素分配给外观.
通常,您可以使用Xcode自定义窗口,以创建包含要自定义的视图和应该应用于它们的自定义艺术的外观文件.Xcode将文件的艺术内容转换为AppKit在显示指定视图时可以绘制的运行时格式.

好吧,所有听起来都很整洁和有希望,但在文档中没有任何地方可以找到外观文件是什么或如何制作一个.除了我已经阅读过的精简文档之外,谷歌的搜索空无一人.

我确实看到UIKit有一个类似的声音UIAppearance类,但据我所知,这不是UIKit类的直接端口.

有谁知道如何制作这些神奇的"外观文件"之一以及我们能用它们做些什么?

cocoa objective-c osx-mavericks

20
推荐指数
2
解决办法
3583
查看次数

无法加载nib文件:MainWindowController.xib,退出

我刚刚创建了我的第一个Mac应用程序,但该程序不断崩溃:

Unable to load nib file: MainWindowController.xib, exiting

我所做的就是删除MainMenu.xib并创建MainWindowController.xib并将其添加为MainInterface.

在此输入图像描述

macos xcode cocoa objective-c

9
推荐指数
1
解决办法
1万
查看次数

在Mac上为Windows进行交叉编译

我可以在mac上编译所以它会生成一个Windows二进制文件吗?用windows dll绑定?(我有一台Windows机器可以复制它们)我该怎么办?clang和gcc是我可以使用的编译器.

macos cross-compiling

6
推荐指数
2
解决办法
4484
查看次数

带有`SA_SIGINFO`的macOS`sigaction()`处理程序不包含`si_pid`

我正在尝试编写一个信号处理程序,它需要知道发送信号的进程的pid.从siginfo_t使用Xcode 10的macOS 10.14传递到我的处理程序中获得任何有用的东西,我没有运气.

我将代码缩减到以下最小样本以证明问题.在这个示例中,我生成了一个子进程来发送我想要测试的信号,该信号是默认的SIGTERM,但没有其他信号我尝试过更好.

假设你想在mac上构建和测试它,你可能想告诉lldb在接收信号时不要停止.你可以使用这个lldb命令:pro hand -p true -s false SIGTERM.

我也在编译C++,但我相信我已经删除了所有这些,示例代码现在应该是纯C.

请注意,如果信号源自子进程,终端或其他进程,则结果始终始终si_pid为0(以及除si_signo和之外的所有内容si_addr)无关紧要.我发送信号的次数无关紧要,因此它似乎不仅仅是竞争条件.

如何获得在macOS 10.14上发送信号的过程的pid?我不记得在10.12这个问题,这是我之前使用的.

这只是解决问题的一个示例,因此请忽略任何实际上不会导致问题的内容.

如果代码看起来应该像我期望的那样工作,那么我将有兴趣看到它所运行的系统的评论.

#include <unistd.h>
#include <signal.h>
#include <stdio.h>

volatile sig_atomic_t histogram[3] = {0,0,0};
volatile sig_atomic_t signaled = 0;
const int testsig = SIGTERM;

void sigaction_handler(int sig, siginfo_t* info, void* context)
{
    switch (info->si_pid) {
        case 0:
        case 1:
            histogram[info->si_pid]++;
            break;

        default:
            histogram[2]++;
            break;
    }
    signaled = 1;
}

int main(int argc, const char …
Run Code Online (Sandbox Code Playgroud)

c macos signals sigaction

5
推荐指数
1
解决办法
253
查看次数