中國農業歷史與文化

    当前位置:主页 > 农家者流 >

    当前栏目:农家者流

    苹果的Cocoa和微软的WPFJavaFX这三种图形界面技术哪个比较优雅

    2020-01-01 14:44:09

    所有做GUIframework的,只有Cocoa把事情都做对了,其它或多或少都缺东西或者做错了些。HardwareAcceleration,Reflect,FunctionObject,Block,GCD,Delegate,Property,ARC,Category,Layer,TextKit这些GUI开发的必要功能Cocoa和OC都有提供,如果你还不了解这些对于GUI开发的意义,说明你还不太懂GUI开发。在提供的基础控件方面,单是TableView和TextKit就足够碾轧其它框架了。在GUI开发领域,OC是最优秀的语言没有之一,它天生就是给GUI设计的,干别的反而不是太适合。ARC也算是一种GC的形式,但是比Java和C#那种GC更适合GUI的场景,ARC靠引用计数管理对象的生命周期,在最后一个引用失效时立刻delete,在编译期就生成了增加和释放引用计数的代码的代码,这样的内存释放时均匀平滑的,可预期的,不会导致意外的线程卡顿,而C#那种GC则对UI流畅度是个威胁,它扫描垃圾对象,在垃圾对象积累到一定数量批量回收内存,导致它对性能的影响不可预期不好控制。GUI追求的是流畅度而不是绝对性能,比如你需要渲染60FPS的动画,最好是每1/60秒渲染一帧,这样看起来是流畅的,如果你用900毫秒渲染了59帧,用100毫秒渲染1帧,那么用户就感觉卡了一下,同样是60FPS,平稳的渲染看起来流畅。C#的GC对流畅度是个潜在威胁。GCDvsawait,GUI里为了保持UIThread的流畅,需要把一些耗时的任务放到其它线程执行,完成后再给主线程来个通知回调,GCD配合Block很好完成这个任务。而C#的async/await的方法虽然也能达到这个目的,但它需要工程师去想像那个执行顺序,不如GCD更好理解。Qt里就没有GCD,只能用QThreadPool配合sigslot自己弄一个,但是由于低端C++没有block,写起来远不如GCD方便。xib不可读,这个本来应该是缺点的,但是实际工程中反而成了优点,xib不可读也就不会有人去手工改写,所以看别人程序只要看源代码和可视化编辑就可以了,少看一个地方总是要简单些的,何况还有Storyboard这种神器。我才不是什么Apple粉呢,了解我的人应该知道,我其实是Qt粉。

    上一篇:明朝天启大爆炸究竟是怎么回事
    下一篇:盲人做梦时会梦到什么

联系信箱

Copyright © 2013中国科学院自然科学史研究所 All Rights Reserved

地址:北京市海淀区中关村东路55号 邮编:100190京ICP备05046608号
网站地图