黏贴板:
黏贴板 *** 作,在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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)