最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

Cocoa开发之NSWorkspace

Cocoa 天狐 8428浏览 0评论

NSWorkspace

NSWorkspace继承自NSObject,属于AppKit.framework。一个NSWorkspace对象可以启动其他应用程序和执行各种文件处理服务。

概述

每一个App中有个一个共享的  NSWorkspace 对象,可以使用类方法sharedWorkspace去访问他,例如, 下边的语句使用 NSWorkspace 对象请求一个可以被TextEdit App打开的文件:

你可以使用workspace对象做这样几件事:

  • 打开, 操作, 获取关于files与devices的信息
  • 跟踪文件系统的改变,设备和用户数据库
  • 获取或者设置文件Finder信息
  • 启动APP

遗留的常量

表1,描述了包含关于应用程序的信息的NSDictionary对象所有的 keys 。NSDictionary被activeApplication和launchedApplications返回,也是NSWorkspace通知应用程序启动和终止提供的用户信息。注意,这些常量被认为是遗留的。

 注意

强烈建议您在应用target macOS 10.6和以后,使用NSWorkspace类的runningApplications方法和NSRunningApplication类方法去检索这些信息,而不是使用activeApplication和launchedApplications方法。

表 1

用户信息字典的keys,通知应用启动与终端方法activeApplication 和 launchedApplications的用户信息字典的keys

Key Value
@"NSApplicationPath" app的全路径,一个NSString对象
@"NSApplicationName" app的名称,一个NSString对象
@"NSApplicationBundleIdentifier" app的bundle identifier,一个NSString对象
@"NSApplicationProcessIdentifier" object. app的进程id,一个NSNumber对象
@"NSApplicationProcessSerialNumberHigh"
长度进程序列(PSN),一个NSNumber对象
@"NSApplicationProcessSerialNumberLow" 长度进程序列(PSN), 一个NSNumber对象

符号

访问共享NSWorkspace实例

+ sharedWorkspace

访问NSWorkspace通知中心

@property(readonly, strong) NSNotificationCenter *notificationCenter;

打开文件

  • - openURL:,打开指定的ULR ,例如使用默认浏览器打开一个网址   [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.skyfox.org"]]
  • - openFile:  ,根据文件类型使用默认的app打开指定的文件
  • - openFile:withApplication:  ,使用指定的app打开文件
  • - openFile:withApplication:andDeactivate:  使用指定的app打开文件,  andDeactivate传入YES,如果发送请求前app在后台禁用,允许已经打开的app到前台。
  • - openFile:fromImage:at:inView:   已废弃

操作应用程序

  • - launchApplication: 运行指定的app
  • - launchApplication:showIcon:autolaunch: ·使用附加的属性运行指定的app
  • - launchApplicationAtURL:options:configuration:error: 指定的url运行app
  • - hideOtherApplications 隐藏其他发送者的所有应用程序

操作文件

  • - duplicateURLs:completionHandler: 以 Finder 操作相同方式异步复制指定URL
  • - recycleURLs:completionHandler: 以 Finder 操作相同方式,移动指定的url到废纸篓
  • - performFileOperation:source:destination:files:tag: 在一个特定的目录中执行对一组文件的文件操作
  • - activateFileViewerSelectingURLs: 激活Finder,根据指定的多个文件,打开一个或者多个windows并且选中他们。
  • - selectFile:inFileViewerRootedAtPath: 根据文件夹全路径选择文件

操纵统一类型标识符信息 Uniform Type Identifier

  • - typeOfFile:error: 返回指定文件的统一类型标识符,如果他能被探测到的话。
  • - localizedDescriptionForType: 返回指定统一类型标识符的本地化描述
  • - preferredFilenameExtensionForType: 返回指定统一类型标识符的文件后缀名
  • - filenameExtension:isValidForType: 返回是否指定文件后缀是否适合统一类型标识符
  • - type:conformsToType:  返回一个布尔值表示第一个统一类型标识符是否符合第二个统一类型标识符。
  • - URLForApplicationWithBundleIdentifier:  返回相对于app指定标识符的url

请求的信息

  • - getInfoForFile:application:type: 检索指定的文件的信息。
  • - URLForApplicationToOpenURL:  返回将用于打开给定的URL的默认的app的URL。
  • - fullPathForApplication: 返回指定app的全路径
  • - getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:  用fullPath描述文件系统。
  • - isFilePackageAtPath:  确定指定的路径是不是一个文件包。
  • @property(readonly, strong) NSRunningApplication *frontmostApplication;    返回最前面的应用程序,接收事件的app。
  • @property(readonly, copy) NSArray<NSRunningApplication *> *runningApplications;  , 返回正在运行的app
  • @property(readonly, strong) NSRunningApplication *menuBarOwningApplication; 返回属于当前显示的menubar的app

管理图标

  • - iconForFile: 返回指定文件包含的图标图片
  • - iconForFileType: 返回指定类型指定文件包含的图标文件
  • - iconForFiles: 返回指定多个文件包含的图标文件
  • - setIcon:forFile:options: 带着附加的选项,为指定的路径文件或者目录 设置图标

卸载设备

  • - unmountAndEjectDeviceAtPath:  在指定的路径卸载和弹出设备。
  • - unmountAndEjectDeviceAtURL:error:  尝试弹出安装指定路径的

管理Bundles

  • - absolutePathForAppBundleWithIdentifier: 返回一个app bundle在文件系统的绝对路径
  • - launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:  指定 bundleIdentifier启动应用程序
  • - openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers: 从一个url数组打开一个或者多个文件

管理桌面图片

  • - desktopImageURLForScreen:  返回给定屏幕的桌面图片
  • - setDesktopImageURL:forScreen:options:error:  指定给定的屏幕与图片url,为桌面设置图片
  • - desktopImageOptionsForScreen: 返回给定屏幕的桌面图片选项

执行Finder Spotlight搜索

  • - showSearchResultsForQueryString:   显示 Spotlight 搜索结果窗口

Finder文件标签

  • @property(readonly, copy) NSArray<NSColor *> *fileLabelColors; 返回相应文件在颜色数组中的文件标签
  • fileLabels 返回标签的数组

跟踪文件系统的改变

  • - noteFileSystemChanged:  通知workspace对象,文件系统在指定的路径发生变化。

注销前请求额外的时间

  • - extendPowerOffBy: 当关闭电源注销用户的时候,请求系统等待自定数量的时间

支持可访问性

  • @property(readonly) BOOL accessibilityDisplayShouldDifferentiateWithoutColor; 一个布尔值,该值指示应用程序是否应避免通过单独的颜色展示信息。
  • @property(readonly) BOOL accessibilityDisplayShouldIncreaseContrast; 一个布尔值,该值指示应用程序是否应该显示高对比度的用户界面。
  • @property(readonly) BOOL accessibilityDisplayShouldReduceTransparency; 一个布尔值,该值指示应用程序是否该避免使用半透明的背景。

废弃的方法

- openTempFile:
- findApplications
- noteUserDefaultsChanged
- slideImage:from:to:
- checkForRemovableMedia
- noteFileSystemChanged
- fileSystemChanged
- userDefaultsChanged
- mountNewRemovableMedia
- mountedRemovableMedia
- mountedLocalVolumePaths
- activeApplication
- launchedApplications

常量

Notifications

所有的NSWorkspace 通知 都是被 NSWorkspace 对象自己的通知中心POST, 不是app的默认notification center. 通过NSWorkspace 对象的 notificationCenter 属性访问通知中心.

  • NSWorkspaceWillLaunchApplicationNotification  当Finder将要启动一个app时发送
  • NSWorkspaceDidLaunchApplicationNotification 当一个新app已经启动时发送
  • NSWorkspaceDidTerminateApplicationNotification 当app停止运行时发送
  • NSWorkspaceSessionDidBecomeActiveNotification  切换用户会话时候发送
  • NSWorkspaceSessionDidResignActiveNotification 切换出用户会话前发送
  • NSWorkspaceDidHideApplicationNotification 当Finder隐藏一个app时发送
  • NSWorkspaceDidUnhideApplicationNotification 当Finder显示隐藏app时发送
  • NSWorkspaceDidActivateApplicationNotification 当Finder将要激活app时发送
  • NSWorkspaceDidDeactivateApplicationNotification 当Finder停止app时发送
  • NSWorkspaceDidRenameVolumeNotification 当卷改变名称 或者更改挂载路径时发送,这些通常会同时更改,只发送一次通知
  • NSWorkspaceDidMountNotification 当新设备挂在时发送
  • NSWorkspaceWillUnmountNotification 当Finder将要卸载设备时发送
  • NSWorkspaceDidUnmountNotification 当Finder已经卸载设备时发送
  • NSWorkspaceDidPerformFileOperationNotification 当文件操作已经被接收app执行时发送
  • NSWorkspaceDidChangeFileLabelsNotification 当Finder文件标签或者颜色改变时发送
  • NSWorkspaceActiveSpaceDidChangeNotification 当发生空间变化时发送
  • NSWorkspaceDidWakeNotification 当机器从睡眠中唤醒后发送
  • NSWorkspaceWillPowerOffNotification 当用户请求注销或者机器已经断电时发送
  • NSWorkspaceWillSleepNotification 机器休眠前发送
  • NSWorkspaceScreensDidSleepNotification 机器锁屏前发送
  • NSWorkspaceScreensDidWakeNotification 机器解锁屏幕后发送
  • NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification  当任何辅助功能显示选项更改时发送

实例属性

  • @property(readonly) BOOL accessibilityDisplayShouldInvertColors;
  • @property(readonly) BOOL accessibilityDisplayShouldReduceMotion;

实例方法

  • - openURL:options:configuration:error:
  • - openURLs:withApplicationAtURL:options:configuration:error:

原文:NSWorkspace - AppKit | Apple Developer Documentation

转载请注明:天狐博客 » Cocoa开发之NSWorkspace

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址