- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试添加 Finder 服务,一切看起来都很好,直到我希望该服务完成其工作。
这是我的 AppDelegate.m 中的方法:
-(void)uploadFromPasteboard:(NSPasteboard *)pboard userData:(NSString *)udata error:(NSString **)err
{
NSString *filename = [pboard stringForType:NSURLPboardType];
dbg(@"file: %@", filename);
}
plist配置:
<key>NSServices</key>
<array>
<dict>
<key>NSRequiredContext</key>
<dict/>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Upload File</string>
</dict>
<key>NSMessage</key>
<string>uploadFromPasteboard</string>
<key>NSPortName</key>
<string>Finder</string>
<key>NSSendTypes</key>
<array>
<string>NSURLPboardType</string>
</array>
<key>NSReturnTypes</key>
<array/>
</dict>
</array>
一切看起来都很好,服务显示在服务菜单中,但是当我单击它时,没有任何反应,没有日志或其他任何内容,就像根本没有调用它一样。
有人可以指出我出了什么问题吗,因为我开始很难拉头发:(
最佳答案
您正在设置服务提供商实例吗?像这样(来自:Providing a Service):
EncryptoClass* encryptor = [[EncryptoClass alloc] init];
[NSApp setServicesProvider:encryptor];
仅在应用程序委托(delegate)类中包含此方法是不够的。在标准应用程序设置中,将其放在应用程序委托(delegate)中可能就足够了:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSApp setServicesProvider: self];
}
此外,您还为 NSPortName
指定“Finder”。这可能是不正确的。来自 Services Properties (强调我的):
NSPortName is the name of the port on which the application should listen for service requests. Its value depends on how the service provider application is registered. In most cases, this is the application name. This property is ignored for Automator workflows being used as services.
我对文档的阅读是,名称为 NSPortName 的应用程序是将用于处理服务请求的应用程序。如果您的应用的名称不是“Finder”(由于显而易见的原因,它不应该),那么您的应用将永远不会被该服务调用。
关于objective-c - NSService 未调用其 NSMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14728671/
我正在尝试添加 Finder 服务,一切看起来都很好,直到我希望该服务完成其工作。 这是我的 AppDelegate.m 中的方法: -(void)uploadFromPasteboard:(NSPa
我是一名优秀的程序员,十分优秀!