cocoa黏贴板和Nil-Target Action

cocoa黏贴板和Nil-Target Action,第1张

概述黏贴板: 黏贴板 *** 作,在MAC系统当中是一个多个进程间通信的一种方式。他的实现原理是mac当中后台运行了一个pboard的黏贴板的进程,然后A程序会使用NSPasteboard将需要黏贴的数据拷贝到这个pboard进程中,然后B程序,通过NSPasteboard从pboard进程获取数据。 MAC黏贴板有一个特点就是,他可以黏贴不同类型的数据当黏贴板当中。 基本流程是,A程序首先会放个数组到黏贴板

黏贴板:

黏贴板 *** 作,在MAC系统当中是一个多个进程间通信的一种方式。他的实现原理是mac当中后台运行了一个pboard的黏贴板的进程,然后A程序会使用NSPasteboard将需要黏贴的数据拷贝到这个pboard进程中,然后B程序,通过NSPasteboard从pboard进程获取数据。

MAC黏贴板有一个特点就是,他可以黏贴不同类型的数据当黏贴板当中。

基本流程是,A程序首先会放个数组到黏贴板程序中,告诉黏贴板这个数据支持哪些数据类型。B程序会询问黏贴板,有哪些数据类型可用,然后读取这些数据。


NSPasteboard类,有很多方法,比较重要的是:

+ (NSPasteboard *)generalPasteboard    返回一个黏贴板,以供使用

+ (NSPasteboard *)pasteboarDWithname:(NSString *)name   返回一个特定名称的黏贴板,以供使用。

- (BOol)setData:(NSData *)data forType:(NSString *)dataType  向黏贴板写数据

- (NSData *)dataForType:(NSString *)dataType 从黏贴板读数据


Nil-target action


这部分的描述,说实话笔者也不是非常清楚,尝试着理解一下。

对于cut、copy、paste,通常这些 *** 作,应该是当前选中的控件进行,比如说当前选中了对话框那么这些 *** 作就应该是针对这些对话框的,如果当前选择的是edit,那么就应该是针对edit的。

那么cocoa如何实现上述过程的哪?答案就是NIL-TARGET ,通过将控件的target设置为nil实现,方法是将copy,cut *** 作拖动到First Responder,从而实现的。


其实是,当一个控件的action为nil时,cocoa会按照如下顺序,查找对应的响应。

1、key windows的first respondre

2、key window的委托

3、如果是document模板,就查NSWindowcontroller,以及NSdocument本身。

4、main windows 与key windows相同的部分再查找一次。

5、NSApplication的实例

6、NSApplication的委托

7、NSdocumentController文档的控制器

总结

以上是内存溢出为你收集整理的cocoa黏贴板和Nil-Target Action全部内容,希望文章能够帮你解决cocoa黏贴板和Nil-Target Action所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1055749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存