iOS之extern关键字
来源:互联网 发布:matlab矩阵公式 编辑:程序博客网 时间:2024/06/15 19:33
iOS 和 Android,一对天生的欢喜冤家,虽然系统和API完全不同,但可以找到很多功能相通的地方,如Android的关键字final 与 iOS的const。相信接触过java都知道如何使用static关键字,比起动不动就new一个对象来说,静态变量/方法在某些地方的使用更具备优势。iOS 与 Android 的static用法是一样的吗?答案当然是否,两者虽然长相一致,但用法却不尽相同,感兴趣的朋友可以参考这篇文章。
那么Android static对应着iOS哪个关键字呢?答案就是:extern。下面就让我们来看看extern的用法。题外话:实现类变量的方法还有很多,如利用AppDelegate、自定义单例、NSUserDefault,但个人觉得还是不够简单。直接上代码:
1、新建一个空白工程,只修改ViewController.m文件(用于定义类变量)和AppDelegate.m文件(用于使用类变量),其他文件不动。
经过测试,可以在多处地方定义类变量,请参考上图注释。
2、接下来,使用extern关键字表示引入全局变量,自动匹配工程,找到与当前(extern + 类型 + 变量名) 匹配的 (类型 + 变量名),接下来就可以对这个全局变量进行取值赋值操作了。
下面来看一段代码:
// // NSSingletonFactory.h // 单例模式的简单使用 // // Created by apple on 15/9/28. // Copyright (c) 2015年 LiuXun. All rights reserved. // // 单例工厂类 #import <Foundation/Foundation.h> #define SingleFactory [NSSingletonFactory shareFactory] #ifdef __cplusplus extern "C"{ #endif id SingleForClass(Class a); // 已在.m 中添加函数的函数声明 #ifdef _cplusplus } #endif @interface NSSingletonFactory : NSObject <NSCopying> { NSMutableDictionary *data; } +(NSSingletonFactory *) shareFactory; -(id)shareInstanceFor:(Class) aclass; -(id) shareInstanceFor:(Class)aclass category:(NSString *)key; @end
可以发现有这么一句:extern "C"
如: extern "C" void fun(int a, int b);是为了告诉编译器:以C语言的方式编译和连接封装函数,而不是C++的。因为C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了(不同的编译器采用的方法不一样),为什么这么做呢,因为C++支持函数的重载。
部分参考:http://blog.csdn.net/u013074465/article/details/42738553
- iOS之extern关键字
- 杂记之关键字extern
- C++之extern关键字
- C++之关键字extern
- ios extern,static,const关键字
- c语言关键字之 extern
- C/C++关键字之extern
- iOS开发中的关键字const/static/extern
- iOS开发中的关键字const/static/extern
- iOS 开发中的关键字const/static/extern
- iOS 基础知识--static,const,extern关键字用法
- Silverlight 控件开发之 "extern alias” 关键字
- 单片机C语言关键字之extern
- C语言学习之关键字extern
- 【C++基础之七】extern关键字
- C/C++之 extern关键字详解
- 《C关键字分析》之extern用法
- C++ 语法实验室之extern关键字
- Linux--shell脚本之正则表达式
- Linux上安装jdk和tomcat(二)
- sass的安装
- 排列组合(四)
- gitlab多人协同工作
- iOS之extern关键字
- vetor
- Android------Binder java层如何与native层交互
- python+eclipse 开发环境配置 http://pydev.org/updates
- JAVA设计模式之单例模式
- 简单判断浏览器
- STM32串口第一个字节丢失问题的分析过程
- 开篇-hello world
- HDU