在Objective C中使用extern
extern关键字在Objective-C中的使用取决于你使用它的目的。如果你想要访问全局定义的常量,使用extern是完全有效的。但是,如果你有一个全局对象,我建议使用单例模式来代替。
在Objective-C中,extern关键字用来声明一个全局变量或者函数,它告诉编译器该变量或函数在其他文件中定义。这样,我们可以在其他文件中使用这些全局变量或函数,而不需要重新声明。
使用extern关键字的主要原因是为了提供一种在多个文件中共享变量或函数的方法。这在一些情况下非常有用,例如在一个大型项目中,多个文件需要访问相同的全局变量。使用extern关键字,我们可以在一个文件中定义全局变量,然后在其他文件中使用它,而不需要重新定义。
当然,extern关键字并不是解决所有问题的最佳方法。如果你有一个全局对象,使用单例模式可能更好。单例模式是一种创建一个类的唯一实例并提供全局访问点的方法。通过使用单例模式,我们可以避免在多个文件中使用extern关键字,并且可以更好地组织和管理全局对象。
总结起来,extern关键字在Objective-C中的使用取决于你的需求。如果你只需要访问全局定义的常量,那么使用extern是有效的。但是,如果你有一个全局对象,我建议使用单例模式来代替。通过使用单例模式,我们可以更好地组织和管理全局对象,并避免在多个文件中使用extern关键字。
在Objective-C中,extern
关键字被广泛应用于Cocoa框架中。使用extern
并不一定会破坏面向对象的特性。即使在面向对象编程中,经常需要使用可以从任何地方访问的变量。在Objective-C中,由于缺乏类变量(类似于Java中使用static
声明的变量),使用extern
是最常见的解决方法。它可以扩大可以引用符号的范围,超出它所声明的编译单元,实质上是承诺它将被某人在某处定义。
此外,可以将extern
与__attribute__((visibility("hidden")))
结合使用,创建一个可以在编译单元之外使用但无法在链接单元之外使用的符号,以实现对高级内部细节的适当封装。
然而,如果未对extern
的使用进行更详细的文档说明,可能会降低代码的可读性。
对于类声明,可以考虑使用stackoverflow.com/questions/22798660/…中提到的方法。
此外,对于与C++代码一起使用,可以考虑使用FOUNDATION_EXPORT,详情可以参考stackoverflow.com/a/10953284/142358。
在Objective-C中,使用extern
关键字有一些用途。Aaron Hillegass建议在全局通知名称中使用extern关键字。例如:extern NSString* const XYYourNotification;
你可以在实现文件中定义实际的NSString*类型的变量。
在哪里可以找到更多关于Hillegass建议的信息?你知道网址吗?
我最初在"Aaron Hillegass"的"Cocoa Programming for Mac OS X"这本书中看到的。这是我迄今为止阅读过的最好的Cocoa相关书籍。网址是:bignerdranch.com/book/…
为什么需要使用extern?我不能只声明一个静态变量吗?谢谢。
静态变量在Objective-C中不可用,因此需要使用extern变量。
如果你说"静态变量在Objective-C中不可用",那么我一直使用的static关键字是什么意思?
当你使用static声明时,你并不是在写Objective-C,而是在写C++。