Objective C2.0学习(十五 作用域)
来源:互联网 发布:商品套餐 数据库设计 编辑:程序博客网 时间:2024/06/04 18:52
几个常见的不同变量作用域:
int pageCount; int tonerLevel;
//other instance variables
@protected:
这个指令后面的实例变量可被类及任何子类中定义的方法直接访问。这个是默认情况
@private:
这个指令后面的实例变量可被定义在该类的方法直接访问,但不能被子类中定义的方法直接访问
@public:
这个指令后面的实例变量可悲该类中定义的方法直接访问,也可被其他类或者模块中定义的方法访问
@package:
对于64位图像,可以在实现该类的图像的任何地方访问这个实例变量。(啥意思?)
一个Printer类,包含两个私有实例变量pageCount和tonerLevel,且只能在该类中被访问
Printer.m
@interface Printer: NSObject
{
@private
@protected
}
...
@end
外部变量:
如果在程序开始处(所有方法,类定义和函数定义之外)编写一下语句:
int gMoveNumber = 0;
那么这个模块中的任何位置都可以引用到该值。这种情况,該值就是全局变量,按照惯例,用小写的g作为全局变量的首字母。
这样的设置是的其他文件也可以同样访问gMoveNumber的值。不仅是全局变量,也是外部全局变量。
外部变量是可悲其他任何方法货函数访问和改变其值的变量。在需要访问外部变量的模块中。变量声明都一样。只需要在声明前加上关键字extern。就告诉系统,要访问其他文件中定义的全局变量。
extern int gMoveNumber;
main.m文件:
#import "Foo.h"
int gGlobalVar = 5; 全局变量
int main (int argc, char *argc[])
{
...
Foo *myFoo = [[Foo alloc] init];
NSLog (@"%i", gGlobalVar);
[myFoo setgGlobalVar: 100];
NSLog (@"%i", gGlobalVal);
..
}
-(void) setgGlobalVar: (int) val
{
extern int gGlobalVar;
gGlobalVar = val;
}
在前面程序中,gGlobalVar定义为全局变量,因此任何方法只要正确滴使用extern声明,都可以访问它。
结果是:
5
100
这就证明了方法setgGlobalVar:可以访问和改变外部变量gGlobalVar的值。
静态变量:
前面琐事的例子与数据封装原则以及良好的面向对象编程技术违背。然而,可能需要下面这种变量:他们的值在经过不同的方法调用时是共享的。
- Objective C2.0学习(十五 作用域)
- Objective C2.0学习(十五 作用域)
- Objective C2.0学习(一)
- Objective C2.0学习(七 类)
- Objective C2.0学习(八 继承)
- Objective C2.0学习(十 多态)
- Objective C2.0学习(一)
- Objective C2.0学习(七 类)
- Objective C2.0学习(八 继承)
- Objective C2.0学习(十 多态)
- Objective C2.0学习(二 类,对象和方法)
- Objective C2.0学习(三 类,对象和方法)
- Objective C2.0学习(四 数据类型和表达式)
- Objective C2.0学习(五 循环结构)
- Objective C2.0学习(六 选择结构)
- Objective C2.0学习(九 重载方法)
- Objective C2.0学习(十三 有关类的问题)
- Objective C2.0学习(十四 变量和数据类型)
- DB2的SQLCODE和SQLState相关解释
- Objective C2.0学习(九 重载方法)
- 【Java Servlet 开发系列之一】在mac系统安装Apache Tomcat的详细步骤
- 【Java Servlet 开发系列之二】创建WebApp详细步骤,通过Servlet实现http简单交互
- Objective C2.0学习(十六 存储类说明符)
- Objective C2.0学习(十五 作用域)
- 服务器安装centos 6.2过程
- Objective C2.0学习(十四 变量和数据类型)
- Objective C2.0学习(十三 有关类的问题)
- URL1
- Objective C2.0学习(十二 id数据类型与静态类型)
- SQLite 设计及概念
- Objective C2.0学习(十一 动态绑定和id类型)
- 【JSP 随笔之一】JSP常用语法和使用总括&&JSP服务器端和客户端代码互相调用