- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
似乎 NSTask
调用 -[NSString fileSystemRepresentation]
来为您提供的每个参数编码值。
由于 -fileSystemRepresentation
使用分解的 unicode 形式进行编码,在某些情况下这可能会成为问题:例如,a-umlaut (ä) 将是编码为 U+0061(拉丁文小写字母 a)和 U+0308(组合分音符),而不是 U+00E4(带分音符的拉丁文小写字母 a)。另一方面,-UTF8String
方法似乎做相反的事情。
我需要使用组合形式对我的 NSTask
参数进行编码。我该如何解决这个问题?
最佳答案
一个可能的解决方案是继承 NSString
并提供您自己的 -fileSystemRepresentation
实现,但不幸的是 NSString
是一个类簇,因此很难子类化(Apple 的文档也不鼓励这样做)。
但是,我们可以创建一个单独的类,将作为NSString
,但提供其自己的-fileSystemRepresentation
实现。
但是,如果 NSTask
对参数对象的类身份做任何事情,这可能会产生问题。目前我没有证据表明情况确实如此——这种解决方法似乎非常有效。
标题:
// MYTaskArgument.h
@interface MYTaskArgument : NSObject
+ (instancetype) taskArgumentWithString:(NSString *)str;
@end
实现:
// MYTaskArgument.m
@interface MYTaskArgument ()
@property(copy) NSString *string;
@end
@implementation MYTaskArgument
+ (instancetype) taskArgumentWithString:(NSString *)str {
MYTaskArgument *ret = [[MYTaskArgument alloc] init];
ret.string = str;
return ret;
}
- (const char *) fileSystemRepresentation {
return self.string.UTF8String;
}
- (id) forwardingTargetForSelector:(SEL)aSelector {
return self.string;
}
@end
关于objective-c - 如何解决 NSTask 调用 -[NSString fileSystemRepresentation] 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18459711/
我正在尝试在存档之前将 Mac 的地址簿复制到保存位置。这是我的代码: // whoami let whoam : NSTask = NSTask()
我正在将 ASIHTTPRequest 集成到我的应用程序中,并包含一些在 XCode 中找到的受支持的框架,但在此 API 的一个文件中,我在此声明中收到错误“NSTask 未声明”...NSTas
昨天我read somewhere that NSTask isn't thread safe这让我很困扰,因为我在 NSThread 中运行 NSTask,并且到目前为止还没有遇到任何线程问题。 我
我有一个可以通过此终端命令导入 XML 文件的应用程序: open /path/to/main\ app.app --args myXML.xml 这非常有效,没有任何问题。我已经使用 Applesc
我正在尝试学习以任务进程可以接受输入文件重定向作为参数的方式编写NSTask。在传统的 unix system() 命令中,这对代码来说是微不足道的,但对于我的应用程序的需求来说,其可控性还远远不够。
我正在尝试使用 NSTask 运行 UNIX 'apropos' 命令。这是我的代码: NSTask *apropos = [[NSTask alloc] init]; NSPipe *pipe =
我正在使用 NSTask 来获取/usr/bin/man 的输出。我得到了输出,但没有格式化(粗体、下划线)。应该看起来像这样: 粗体带有下划线的文本 (请注意,斜体文本实际上带有下划线,只是此处没有
假设一个基于 Cocoa 的沙盒应用程序生成了一个 SSH 实例。到目前为止一切顺利,SSH 进程正在启动。 问题是,如何允许子进程读取文件(例如 ~/.ssh/config 或 ~/.ssh/kno
此代码用于获取进程的标准输出 NSTask * task; NSPipe * pipe; NSFileHandle * fileHandle;
我在执行不同的 NSTask 时遇到问题。相同的launchPath,不同的参数。我有一个类,其实例管理自己的 NSTask 对象,并根据参数初始化这些实例 - 正在创建依赖的 NSTask 对象。我
我收到了一份来自 NSTask 的 -launch 崩溃现场的报告。 有问题的代码是: NSTask *task = [[NSTask alloc] init]; [task setLaunchPat
我正在编写一个任务来访问 OpenSSL 二进制文件。如果我复制/粘贴不带单引号的命令,那么它在终端中可以完美运行。 我不断将引用粘贴到命令中。这是代码/错误... let keySizeValue
在 NSTask 的源代码中,我在 waitUntilExit 方法中发现了一个有趣的地方: - (void) waitUntilExit { NSTimer *timer = nil;
我正在使用 NStask 来获取文件夹大小。它对于普通文件路径(如 home/ABC/Users/testUser/Documents)工作正常。但它没有显示 home/ABC/Users/testU
OS X 10.6.8、Carbon、C++ 应用。 我想从 shell 运行命令并以字符串形式返回结果,然后用作另一个函数的参数。 df/|尾-n +2 | awk '{ print $1 }' 但
我使用 NSTask 和 setStandardOutput 将命令行工具的标准输出重定向到我的程序,以便我可以使用它进行处理。这很好用,但作为一个副作用,当我运行程序时,工具的输出显示为输出。我想完
我正在尝试使用 NSTask 将二进制 plist 转换为 xml,尽管遇到了一个我不太理解的错误。如果我将命令 NSTask 失败并将其复制到命令行,它就可以正常工作。希望有人能告诉我出了什么问题。
我需要使用 NSTask 按顺序运行多个命令,并且想知道什么是判断任务是否已完成的好方法,以便我可以继续执行下一个命令。我正在使用“sox”(我将其包含在我的应用程序包中)使用输入音频文件创建临时音频
这个问题已经有答案了: NSTask NSPipe - objective c command line help (2 个回答) 已关闭2 年前。 我使用 NSTask 如下: NSTask
我正在使用 NSTask 在 Cocoa 中执行可执行文件。可执行文件正在创建文件。 有什么方法可以找出该可执行文件在执行过程中创建了哪些文件? 谢谢。 最佳答案 Instruments 中有一个工具
我是一名优秀的程序员,十分优秀!