我是CS学生对Cocoa / CocoaTouch相对较新,我试图了解OS X / iOS dev的本质。我理解动态和静态语言之间的区别。
静态语言将所有变量绑定到类型等。变量在动态等执行期间被绑定。
然而,当我开发OS X应用程序时,我很难看到动态功能会改变事物的例子吗?有人可以解释某人解释Obj-C可以支持哪些Swift在开发应用程序时根本无法支持? 我遇到过很多情况,缺乏灵活性迫使我重构我的代码,但这不是我所说的,还是我感到困惑?
答案 0 :(得分:3)
有人可以解释某人解释Obj-C可以支持哪些Swift在开发应用时根本无法支持
我过去在Objective-C中利用的不是动态输入作为动态消息传递。整个消息传递装置可以在运行时重新调整,从简单的键值编码或performSelector
到在运行时动态注入方法,方法调配和键值观察。
你可以在Swift中做所有这些事情,但只有你在谈论Objective-C(即这是一个NSObject)。那是因为所有这些事情实际上都是在Objective-C中完成 。例如,在没有Foundation的情况下,你无法在纯Swift中实现最基本的键值编码,因为Swift既没有动态消息也没有真正的内省。
然而,从实际应用程序编程的角度来看,我不会错过任何一个。首先,我我总是与Objective-C交谈,因为Cocoa 在Objective-C中是。另一方面,事实证明,大多数这些技巧并非真正必要,而且我大多数都找到了其他方法来实现我的实际目标。我仍然使用一些键值编码(特别是做一些技巧,比如在CALayer中存储一个任意值),但总的来说我已经减少了对这些东西的使用,主要是因为函数是第一个斯威夫特的公民。
至于动态输入,我暂时不会错过它;改为Swift实际上已经保存我没有意识到错误,因为我对API施加了动态类型(例如objectAtIndex:
返回{{1} - 但是,可以肯定的是,由于“轻量级仿制药”,今天不太可能给你带来麻烦。