• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Objective-C中static关键字用法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Objective-C中,在变量声明前加上关键字static,可以使局部变量保留多次调用一个方法所得的值。例如下面的一句Objective-C语句:

static int hitCount = 0;

声明整数hitCount是一个static静态变量。和其他常见局部变量不同,Objective-C中的static静态变量的初始值为0,所以前面显示的初始化是多余的。此外,它们只在程序开始执行时初始化一次,并且在多次调用方法时保存这些数值。所以编码序列

 

1
2
3
4
5
6
7
-(void) showPage
{
static int pageCount = 0;
...
++pageCount;
...
}

可能出现在一个showPage方法中,它用于记录该方法的调用次数(在这种情况下,还可能是要打印的页数)。只在程序开始时局部static静态变最设置为0,并且在连续调用showPage方法时获得新值。

 

注意,将pagaCnunt设置为局部静态变量和实例变量之间的区别。对于前一种情况,pageCount能记录调用showPage方法的所有对象打印页面的数目。对后一种情况,pageCount变量可以计算每个对象打印的页面数目,因为每个对象都有自己的pageCount副本。

记住只能在定义静态和局部变量的方法中访问这些变量。所以,即使静态变量pageCount,也只能在pageCount函数中访问。可以将变量的声明移到所有方法声明的外部(通常放在implementation文件的开始处),这样所有方法都可以访问它们,如:

 

1
2
3
4
5
#import “Printer.h”
static int pageCount;
@implementation Printer
...
@end

现在,该文件中包含的所有实例或者类方法都可以访问变量pageCount。返回关于分数的讨论,将reduce方法的代码结合到实现文件Fraction.m中。不要忘了在接口文件Fraction.h中声明reduce方法,之后,就可以在下面代码中测试这个新方法。

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#import “Fraction.h”
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Fraction *aFraction = [[Fraction alloc] init];
Fraction *bFraction = [[Fraction alloc] init];
[aFraction setTo: 1 over: 4]; // set 1st fraction to 1/4
[bFraction setTo: 1 over: 2]; // set 2nd fraction to 1/2
[aFraction print];
NSLog (@”+”);
[bFraction print];
NSLog (@”=”);
[aFraction add: bFraction];
// reduce the result of the addition and print the result
[aFraction reduce];
[aFraction print];
[aFraction release];
[bFraction release];
[pool drain];
return 0;
}

结果输出如下:

 

 

1
2
3
4
5
1/4
+
1/2
=
3/4

好了,Objective-C中static静态变量的用法就介绍到这里,希望对初学者带来帮助,谢谢阅读。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Objective-C对象之类对象和元类对象发布时间:2022-07-18
下一篇:
Objective-C基础学习笔记——FoundationKit发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap