小编JWW*_*ker的帖子

切换空间时保持窗口在顶部

我创建了一个窗口使用-[NSWindow setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces].
它只做我想要的一半,但是:当我切换空格时,窗口也会切换空格(如预期的那样),但我的窗口移动到该空间中所有其他窗口后面的后面.这特别糟糕,因为我的应用程序处于活动状态,但其窗口低于所有其他应用程序的窗口.我尝试将级别更改为NSFloatingWindowLevel,这确实保持在顶部,但是当切换空格时它会丢失键状态(焦点).

我尝试NSWindowCollectionBehaviorMoveToActiveSpace了收集行为,但它绝对不是我想要的.

有希望吗?我知道几乎没有其他与Spaces相关的API.

macos cocoa mission-control

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

如何使 NSWindow 看起来被禁用并且不响应用户输入?

我不确定是否有这样的系统级功能。无论如何,有没有办法让 NSWindow 看起来被禁用并且不响应用户输入?

macos cocoa

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

theEvent charactersIgnoringModifiers - 获取没有修饰符的字符

我试图在我的游戏中实现具有两种模式的键盘类.游戏模式接受使用小写未修改键的输入(未修改意义,如果我用移位键入'0',它仍然返回'0'而不是')').我已经跟踪了它,只要使用类的charactersIgnoringModifiers方法,NSEvent但是这个方法排除了除shift键之外的所有修饰键.

cocoa shift keydown modifier-key

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

Xcode无法添加静态库

我已经创建了一个大型框架,我打算在我将要创建的几个应用程序中使用它,但是我无法弄清楚如何创建和导入静态库.我一直在关注本教程,因为它似乎是我能找到的最新版本

http://www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/

教程在创建静态库之后说,并将.a文件与.h文件一起复制到文件夹中;

Now, just drag this folder into the project and Xcode will set up 
all of the linking automagically.
Run Code Online (Sandbox Code Playgroud)

但是,当我将该文件夹复制到xCode时,该文件夹为蓝色,我无法导入任何文件

然后我尝试了本教程

http://www.blog.montgomerie.net/easy-xcode-static-library-subprojects-and-submodules

我设法让它导入像这样的示例项目

   #import  <SampleSubproject/SampleSubproject.h>
Run Code Online (Sandbox Code Playgroud)

但是我无法导入库中的任何其他文件.

我一直在这个时候,我似乎无法找到一个简单的简洁教程,解释如何正确地添加一个静态库,似乎有这么多不同的方法.有人可以告诉我最简单的方法来做这件事.

另外我听说静态库不能在iOS模拟器中编译,这是真的吗?

提前致谢

xcode static-libraries ios

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

终止NSTask及其子项

我正在使用NSTask执行一系列长时间运行的命令,如下所示:

commandToRun = @"command 1;command2";
NSArray *arguments = [NSArray arrayWithObjects:
                      @"-c",
                      commandToRun,
                      nil];
self.task = [[NSTask alloc] init];
[self.task setLaunchPath: @"/bin/sh"];
[self.task setArguments: arguments];
[self.task launch];
Run Code Online (Sandbox Code Playgroud)

这将为shell创建一个进程,并为当时正在运行的任何命令创建子进程(命令1或命令2).如果我用[self.task terminate]它杀死任务只会杀死父进程.有没有办法识别和杀死孩子?

cocoa nstask

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

如何在 Mac OSX Mavericks 中正确运行字符串工具?

如何在 Mac OSX Mavericks 中正确运行字符串工具?

我正在尝试按照我在网上找到的示例来运行它:

strings -a UserParser.class
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strings: fat file: UserParser.class truncated or malformed (offset plus size of cputype (11078144) cpusubtype (17415)文件结尾)

linux macos

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

无论如何,使石墨中的碳接受所有数据

Graphite中的Carbon监听器经过精心设计和调整,使其在服务器上的负载可以预测,以避免服务器本身充满IO等待或整体系统负载暴涨.如有必要,它将丢弃传入的数据,将服务器负载作为优先级.毕竟,对于存储的典型数据,这没什么大不了的.

我很欣赏这一切.但是,我试图将来自不同来源的大量数据积压到石墨中,而不是在实际数据中抽取实时数据.我有一个来自第三方的可靠数据源,它是一天一天散装给我的.

所以在这种情况下,我不希望任何数据值丢失在地板上.我真的不关心数据导入需要多长时间.我只是想禁用所有的安全机制,让碳做它的事情,并且知道我的所有数据都已经成功.

我正在搜索文档并找到关于在carbon.conf中调整carbon_cache参数的各种建议,但我找不到这个.它开始听起来更像艺术而不是科学.任何帮助赞赏.

graphite

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

使用单个绘制调用在OpenGL中渲染多个模型

我构建了一个2D图形引擎,并为它创建了一个批处理系统,因此,如果我有1000个具有相同纹理的精灵,我可以通过一次调用openGl来绘制它们.

这是通过将具有相同纹理的所有子画面的所有顶点放入单个vbo顶点阵列来实现的.

而不是"打印这些顶点,打印这些顶点,打印这些顶点",我做"将所有顶点放在一起,打印",只是为了非常清楚.很容易,但现在我正试图在3D中实现同样的事情,而且我遇到了一个大问题.

问题是我正在使用模型视图投影矩阵来放置和渲染我的模型,这是在3D空间中渲染模型的常用方法.

对于屏幕上的每个模型,我需要将MVP矩阵传递给着色器,以便我可以使用它将每个顶点转换为正确的位置.

如果我在着色器之外进行转换,它将由cpu执行,这不是一个好主意,原因很明显.

但问题在于此.我需要将矩阵传递给着色器,但对于每个模型,矩阵都是不同的.

因此,我不能像使用2d精灵那样做,因为更改着色器制服需要每次都画一次.

我希望我已经清楚了,也许你有一个好主意我没有或你已经遇到了同样的问题.我知道某个地方有一个解决方案的事实,因为在Unity这样的引擎中,你可以为多个模型使用相同的着色器,并通过一次绘制调用逃脱

opengl 3d shader

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

在 NSTokenField 中混合标记和字符串

我想要一个NSTokenField包含纯文本和令牌的。这与这个问题是同样的问题,但那里的答案并没有为我解决。也许我遗漏了一些东西,或者苹果在这些答案发布后的 5 年内改变了一些东西。

具体来说,假设我想输入“hello%tok%”并将其变成这样:

文本“hello”和令牌“TOKEN”的图像

为了尝试消除混淆的机会,我总是使用以下类之一的自定义表示对象,而不是纯字符串......

@interface Token : NSObject
@end

@implementation Token
@end


@interface WrappedString : NSObject
@property (retain) NSString* text;
@end

@implementation WrappedString
@end
Run Code Online (Sandbox Code Playgroud)

这是我的委托方法:

- (NSString *)tokenField:(NSTokenField *)tokenField
    displayStringForRepresentedObject:(id)representedObject
{
    NSString * displayString = nil;
    if ([representedObject isKindOfClass: [WrappedString class]])
    {
        displayString = ((WrappedString*)representedObject).text;
    }
    else
    {
        displayString = @"TOKEN";
    }
    return displayString;
}

- (NSTokenStyle)tokenField:(NSTokenField *)tokenField
                styleForRepresentedObject:(id)representedObject
{
    NSTokenStyle theStyle = NSPlainTextTokenStyle;
    if ([representedObject isKindOfClass: [Token class]])
    {
        theStyle = NSRoundedTokenStyle;
    }

    return …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nstokenfield

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

如何在 doxygen 块内的代码块内显示注释块?

假设我想/* - */在 C++ 代码的 Doxygen 文档块中的代码块内显示分隔注释块。如果 Doxygen 块本身是/* - */ 分隔的,就像这样,

/**
    documentation
    \code
    /*
        comment 
    */
    \endcode
*/
Run Code Online (Sandbox Code Playgroud)

这显然会成为一个问题:Doxygen 会做正确的事情,但 C++ 编译器不知道它应该忽略内部*/. 另一种方法是使用 ///- 分隔的 Doxygen 块:

/// documentation
/// \code
/// /*
///     comment 
/// */
/// \endcode
Run Code Online (Sandbox Code Playgroud)

这个版本不会让 C++ 编译器感到困惑,但现在 Doxygen 添加了一个额外的星号。我怎样才能让 Doxygen 和 C++ 都满意?

doxygen html 输出


评论中建议我至少可以将额外的星号与应该存在的星号对齐,使输出看起来更好。在某些情况下这可能是可以接受的,但我认为这对我来说是一个问题,所以让我解释一下原因。该文档正在讨论一种渲染器着色语言,它可以理解#include单行注释,但不能理解块注释,并且想说:

不支持块注释行,但如果包含的文件未关闭块,则可能无关紧要:

/*
  #include "MyFile.h" --> file will be included anyway.
*/
Run Code Online (Sandbox Code Playgroud)

如果改为

/*
 *  #include "MyFile.h" --> file will be included …
Run Code Online (Sandbox Code Playgroud)

c++ doxygen

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