Apple Developer文档笔记(一)AppKit App Structure

东门胤
2023-12-01

导语

这篇文章是方便自己学习理解苹果开发者的文档的笔记,希望能给有需要的同学一些帮助,因为自己翻译理解的内容,
必然存在一些不足,还望指出。

Apple Developer

(https://developer.apple.com/)  *苹果开发者网站

1.Core

(1)Application

	class NSApplication
	
		Declaration(声明)
		class NSApplication : NSResponder
		
		Overview(综述)
		Every app uses a single instance of NSApplication to control the main event
		 loop, keep track of the app’s windows and menus, distribute events to the 
		appropriate objects (that is, itself or one of its windows), set up 
		autorelease pools, and receive notification of app-level events.
		
		*注释
		class NSApplication 在被实例化之后控制整个应用主体的事件循环,并且跟踪应用
		轨迹,并将事件分配给合适的对象,建立 autorelease pools ,接受来自应用层的事
		件通知。
		
	class NSRunningApplication
		
		Declaration(声明)
		class NSRunningApplication : NSObject
		
		Overview(综述)
		Some properties of an app are fixed, such as the bundle identifier. Other 
		properties may vary over time, such as whether the app is hidden. 
		Properties that vary can be observed with key-value observing, in which 
		case the description comment for the method notes this capability.
		
		An NSRunningApplication instance remains valid after the app exits. However, 
		most properties lose their significance, and some properties may not be 
		available on a terminated application.
		
		*注释
		在一个应用内的一些已经被固定得工程,例如打包的标识府。另外一个工程可能已经
		超时,例如被隐藏的应用。有些工程的性能和方法的描述注释,在这种情况下应该留
		意敏感的关键值。
		
		一个 NSRunningApplication 实例化之后,当app退出之后仍然是有效的。不过。大部
		分工程失去他们本身的意义,并且在被终止的应用中的有一些工程可能会失效。
		
	protocol NSApplicationDelegate
	
		Declaration(声明)
		protocol NSApplicationDelegate
		
		*注释
		协议授权
		
	function NSApplicationMain
	
		Declaration(声明)
		func NSApplicationMain(_ argc: Int32, 
		_ argv: UnsafeMutablePointer<UnsafeMutablePointer<CChar>?>) -> Int32
		
		*注释
		函数构造应用主体,参数1 int32类型,参数2,不安全的可变的指针 ->返回一个int32
		的值

(2)Environment

	class NSWorkspace
	
		Declaration(声明)
		class NSWorkspace : NSObject
		
		Overview(综述)
		There is one shared NSWorkspace object per app. You use the class method 
		shared to access it. 
		
		You can use the workspace object to:

			(1)Open, manipulate, and get information about files and devices

			(2)Track changes to the file system, devices, and the user database

			(3)Get and set Finder information for files

			(4)Launch apps
			
		*注释
		这是每一个 app 都拥有的共享的 NSWorkspace 对象。你使用这类方法去共享存取它。
		你可以使用这个工作区对象完成以下操作:
			(1)打开,操作,并且得到这个文件或设备的相关信息
			(2)追踪、改变文件格式,设备和用户数据库
			(3)得到文件的信息和设置文件的信息探测器
			(4)注册apps

(3)Pasteboard

	class NSPasteboard
	
		Declaration(声明)
		class NSPasteboard : NSObject
		
		Overview(综述)
		The pasteboard server is shared by all running apps. It contains data that 
		the user has cut or copied, as well as other data that one application 
		wants to transfer to another. NSPasteboard objects are an application’s 
		sole interface to the server and to all pasteboard operations.

		An NSPasteboard object is also used to transfer data between apps and 
		service providers listed in each application’s Services menu. The drag 
		pasteboard is used to transfer data that is being dragged by the user.
	
		*注释
		这个 pasteboard 服务是对所有运行的apps共享的。它不但包括用户剪切或者复制的
		数据,同时也包括来自同一个应用并将其转换为另一种的其他数据。NSPasteboard 对
		象是一个应用中的唯一的指针对于这个服务器和整个 pasteboard 操作。
		
		在已注册的每一个应用的服务器列表中 NSPasteboard 对象也是转换apps和服务器之间的数据的
		提供者。drag pasteboard 通过用户开始拖动的时候转换数据。

(4)Data Management

	Article	Protecting the User’s Privacy
			
		Overview(综述)
		Designing for user privacy is important. Most Apple devices contain personal
		data that the user doesn’t want to expose to apps or to external entities. 
		If your app accesses or uses data inappropriately, the user might stop 
		using your app and even delete it from their device.

		Access user or device data only with the user’s informed consent obtained 
		in accordance with applicable law. In addition, take appropriate steps to 
		protect user and device data, and be transparent about how you use it.
		
		*注释
		设计用户隐私是很重要的。绝大多数的苹果设备包括用户不想展示或者实际的私人数
		据。如果你的app 不恰当的获取调用数据,这个用户可能会停止使用你的设备甚至从
		他的设备上删除你的应用。
		
		获取用户或则设备的数据只能在用户正式一致同意在可适用的法律下获取。另外,获
		取的适当的步骤去保护用户和设备数据,并且将你使用这些数据的方法变得透明公开。

(5)User Preferences

	Class NSUserDefaultsController
	
		Declaration(声明)
		class NSUserDefaultsController : NSController
	
		Overview(综述)
		NSUserDefaultsController is a Cocoa bindings–compatible controller class. 
		Properties of the shared instance of this class can be bound to user 
		interface elements to access and modify values stored in UserDefaults.
	
		*注释
		NSUserDefaultsController 是一个 Cocoa bindings–compatible 控制器类。内容上
		这个共享实例化之后对于这个类可能束缚在用户的指针元素上去获取并且更改储存在
		UserDefaults 上的值

(6)App Services

	Class NSSharingService
		
		Declaration(声明)
		class NSSharingService : NSObject
		
		Overview(综述)
		The NSSharingService class is used to provide a consistent user experience 
		when sharing items—NSURL objects, NSString objects, NSImage objects, video
		(through file URLs), or any object that implements the NSPasteboardWriting 
		protocol—in macOS.

		For any item or group of items, the NSSharingService displays a sharing 
		sheet that lets the user visualize what will be shared to the service. A 
		sharing service can: create a post on a social network like Twitter or 
		Facebook, send a message by email or iMessage, upload videos to viewing 
		services, or send a file by AirDrop.
	
		*注释
		这个 NSSharingService 类 当共享当分享 NSURL 对象,NSString 对象,NSImage 对
		象,视频(来源url文件),或者任何来自 macOS 中的 NSPasteboardWriting 协议里
		的对象,被作为提供一个一致的用户体验的工具
		
		对于任何项目或集群下的项目,这个 NSSharingService 展示的共享内容来自让用户
		将共享的内容可视化通过这个服务。一个共享服务能做:创建一条像Twitter or 
		Facebook的请求,发送邮件内容或者iMessage,上传视频给 viewing 服务,或者通过
		AirDrop 发送文件。
		
	Class NSSharingServicePicker
		
		Declaration(声明)
		class NSSharingServicePicker : NSObject
		
		Overview(综述)
		The NSSharingServicePicker class presents a list of sharing services, so 
		that the user can choose a service to share an item. When a service is 
		chosen, the picker automatically executes it, which presents the sharing 
		window.

		The NSSharingServicePickerDelegate allows customizing the picker’s 
		available services, where it appears, and allows assigning the delegate 
		object for the NSSharingService delegate.
	
		*注释
		这个 NSSharingServicePicker 类展示一个共享服务的列表,以至于让用户能选择服
		务去分享项目。当这个服务被选中时,这个选择器自动地执行展示在共享窗口上的这
		个服务。
		
		这个 NSSharingServicePickerDelegate 允许定制化的选择器的有效服务,并且允许
		设定这个代表对象作为 NSSharingService 代表分配任务。
		
	Protocol NSSharingServicePickerDelegate
	
		Declaration(声明)
		protocol NSSharingServicePickerDelegate
	
		*注释
		共享服务选择协议(参考 NSSharingServicePicker 获取更多信息)
	
	Protocol NSServicesMenuRequestor
	
		Declaration(声明)
		protocol NSServicesMenuRequestor
		
		Overview(综述)
		This informal protocol consists of two methods, writeSelection(to:types:) 
		and readSelection(from:). The first method provides data to a remote 
		service, and the second receives any data the remote service might send 
		back. Both respond to messages that are generated when the user chooses a 
		command from the Services menu.
		
		*注释
		这个非正式协议包含两个方法,写入项(to:type:)和读取项(from:)。第一张方
		法提供数据给远程服务器,并且依次接收远程服务器返回的所有数据。同时会创建一条
		回调消息当用户从服务器列表中选择了一个命令后。

(6)App Help

	Class NSHelpManager
		
		Declaration(声明)
		class NSHelpManager : NSObject
	
		Overview(综述)
		The NSHelpManager class provides an approach to displaying online help. An 
		app contains one NSHelpManager object.
		
		*注释
		NSHelpManager 类提供一个展示线上帮助的途径。一个app里包含了一个NSHelpManager
		对象。
		
	Protocol NSUserInterfaceItemSearching
		
		Declaration(声明)
		protocol NSUserInterfaceItemSearching
		
		Overview(综述)
		In general, users find the Help search functionality very useful. However, 
		many large apps don't use Apple Help API because of cross platform 
		requirements, which means that some important Help topics are not presented 
		as part of the Help menu. This API allows developers to incorporate their 
		own Help topics and take full advantage of the Help feature.

		In your app, you implement the NSUserInterfaceItemSearching protocol and 
		then register your object with registerUserInterfaceItemSearchHandler(_:).
		
		*注释
		一般而言,用户寻求帮助性的功能函数十分常见。不过,大多数的apps没有使用Apple
		Help API 是因为通过平台要求,就意味着一些重要的帮助内别是不作为帮助菜单的一
		部分显示。这个Api允许开发者将他们自己的帮助类别包含并充分利用在帮助内容里。
		
		在你的app中,你执行 NSUserInterfaceItemSearching 协议并且注册在你的对象上
		通过 registerUserInterfaceItemSearchHandler(_:).
 类似资料: