首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让dock重新加载所有dock瓦片插件?

如何让dock重新加载所有dock瓦片插件?
EN

Stack Overflow用户
提问于 2010-10-12 01:44:08
回答 3查看 1.2K关注 0票数 1

我正在制作一个使用dock tile插件的应用程序。然而,当我重新编译我的dock tile插件时,dock仍然使用旧的插件,即使我killall了dock。解决这个问题的唯一方法是重启我的Mac,但我不想因为我所做的每一个微小的代码改变而重启它。此外,dock tile插件的文档也很少。有谁可以帮我?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-12 05:18:07

我使用NSAlert和可访问性检查器发现,一个名为SystemUIServer的进程负责dock tile插件。只需这样做:

代码语言:javascript
复制
$ killall SystemUIServer

这将重新启动SystemUIServer并重新加载停靠磁贴插件。

票数 2
EN

Stack Overflow用户

发布于 2011-07-30 23:27:40

您也可以在“活动监视器”中执行此操作。搜索"dock“并手动退出com.apple.dock.extra。这是上面“键盘”选项的“鼠标”选项,它不会造成太多的附带损害。

我建议在开发期间,对于频繁的代码更改,您可以将上面的命令包装在Cocoa任务中:

代码语言:javascript
复制
- (BOOL)killall:(NSString *)process {
    //Configure
    NSString *toolPath = @"usr/bin/killall";
    NSArray *arguments = [NSArray arrayWithObject:process];

    //Create
    NSTask *task = [[[NSTask alloc] init] autorelease];
    [task setLaunchPath:toolPath];
    [task setArguments:arguments];

    //Run
    [task launch];
    [task waitUntilExit];

    //Return success
    return ([task terminationStatus] == 0);
}

将此代码放在NSApplication上的一个类别中,执行方式如下:

代码语言:javascript
复制
NSLog(@"MyApp: killed UI Server: %d", [NSApp killall:@"SystemUIServer"]); //Comment out for release

或(推荐)

代码语言:javascript
复制
NSLog(@"MyApp: killed Dock plugins: %d", [NSApp killall:@"com.apple.dock.extra"]); //Comment out for release
票数 2
EN

Stack Overflow用户

发布于 2011-10-09 00:05:14

我最近一直在与这个问题作斗争,看起来单独终止Dock进程或SystemUIServer进程都没有起到作用;我必须将它们都杀死。

回到Apple关于这个主题的文档:

当您的应用程序从Dock中移除时,将使用

参数调用setDockTile:方法。您的setDockTile:方法应该释放Dock tile对象,清理您的Dock Tile插件分配的所有资源,然后退出。

我发现如果你从苹果文档的字面意思上看“并退出”,这些插件就不会逗留,卸载也是干净的。我觉得这样做有点脏(我已经向苹果公司提交了反馈),因为我相信我的退出(0)也会导致其他应用程序的docktileplugin被重新加载。(我猜不得不求助于killall Dock/SystemUIServer也是如此)

文档看起来也很含糊。我不确定为什么苹果会让你做好内存管理的事情,并在你下一步做的事情是杀死进程时释放对象。

代码语言:javascript
复制
    if(dockTile == nil) {
        NSLog(@"Docktile version %@ unloading", [[[NSBundle bundleForClass:[self class]] infoDictionary] valueForKey:@"CFBundleVersion"]);
        [_dockTile release], _dockTile = nil; // don't leak memory!
        exit(0); // ouch
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3908650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档