objective-c没有类静态成员变量

http://www.cocoachina.com/bbs/simple/index.php?t3312.html

kyle2009-04-05 17:09
和c++一样,objective c中静态变量使用static关键字进行定义。例如:static NSUInteger n; 需要注意的是该static变量的作用域,它的作用域是在定义该变量的.m文件范围内。 
和c++不同,objective c不支持类静态成员变量(也就是不支持class variables),通常的做法是在class之外定义静态变量来代替。

supertintin2009-04-05 18:55
引用
引用第1楼kyle于2009-04-05 17:09发表的  : 
和c++一样,objective c中静态变量使用static关键字进行定义。例如:static NSUInteger n; 需要注意的是该static变量的作用域,它的作用域是在定义该变量的.m文件范围内。 
和c++不同,objective c不支持类静态成员变量(也就是不支持class variables),通常的做法是在class之外定义静态变量来代替。 
 
 
 
有没有全局变量呢?如在A类里面定义的变量,在B类中不需要创建A类的实例就可访问和修改。

kyle2009-04-06 10:17
objective c支持全局变量,用法和c/c++中相同。根据你的要求,这里用全局变量来实现并不合适。你需要做的是在A类的implementation文件中定义一个static变量,然后为A类定义静态成员函数(class method)来操作该变量。这样在其它类中你就不需要创建A类的实例来对static变量进行访问。虽然该static变量并不是A类的静态成员变量,但是也算达到了同样的效果。为什么不定义全局变量,关键就在于变量的作用域,static变量的作用域被限制在单一的文件中。代码可以如下所示: 
 
//example.h 
@interface Example : NSObject { 
 

- (id)init; 
+(int)instanceCount; 
@end 
 
//example.m 
#import "example.h" 
 
static int count; 
 
@implementation Example 
-(id)init{ 
    self = [super init]; 
    if(nil!=self){ 
        count+=1; 
    } 
    return self; 

 
+(int)instanceCount{ 
    return count; 

@end 
 
上面的例子中你就可以通过[Example instanceCount]对静态变量count进行访问,无须创建实例。



为什么没有啊,谁能告诉我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值