在考虑Objective-c中的“图书馆”时,我有什么想象?

时间:2009-05-20 16:19:48

标签: objective-c cocoa frameworks

对我来说,库是一组有用的类。通常是某些东西,可以在很多项目中使用。在Objective-c方面也是如此吗?那里的图书馆究竟是什么?只有有方法的类?还是功能集合?它们是否必须编译成一个“库”? “框架”之间的隔离在哪里?不是同样的事情吗?

2 个答案:

答案 0 :(得分:3)

根据Wikipedia:“框架在功能上类似于共享库,这是一个编译对象,可以在运行时动态加载到程序的地址空间中,但框架会添加相关的资源,头文件和文档。” / p>

框架本质上是一个包中的共享库(二进制文件,类似于DLL),它还包含使用该库所需的所有信息(如头文件,文档,国际化资源等)。没有所有附加功能的框架只是一个库。

没有要求框架本质上是面向对象的,尽管我认为这是Cocoa的标准。

对于Cocoa,框架的概念通常取代(增强)库的概念。但是,Objective-C工具链没有强制要求。您可以使用仅源“库”或unix样式的二进制库(例如.so文件)。我想到了这些通用术语中的“库”......它只是源代码或二进制形式的有用代码集合。另一方面,框架是OS X特定含义的特定事物。

答案 1 :(得分:2)

假设您正在讨论使用Cocoa框架的库而不仅仅是使用普通的旧Objective-C语言编写的库,那么库(或框架)是一组一起工作以执行特定任务的类。我不会将ObjC框架组织为函数集合,因为这完全违背了该语言的范例。

至于库和框架之间的区别,这可能有点主观。对我来说,一个库(在你的问题的上下文中)是用C编写的东西,它可能更类似于非OO函数集合。如上所述,框架将是一个完整的类包。因此,CocoaDev上的Messaging框架将是一个框架,而您可以在iPhone上访问的sqlite3 API将是一个库。再一次,那只是我。其他人可能会以不同的方式解释这些术语。