ios 共享数据

xcode中用静态成员函数来代替全局变量
objective c支持全局变量,用法和c/c++中相同。

但是当我们要求如下时:如在A类里面定义的变量,在B类中不需要创建A类的实例就可访问和修改。
用全局变量来实现并不合适。此时我们需要做的是在A类的implementation文件中定义一 个static变量,

然后为A类定义静态成员函数(class method)来操作该变量。这样在其它类中你就不需要创建A类的

实例来对static变量进行访问。虽然该static变量并不是A类的静态成员变量, 但是也算达到了同样的效果。

为什么不定义全局变量,关键就在于变量的作用域,static变量的作用域被限制在单一的文件中。


#import<Foundation/Foundation.h>
externintnum;//全局变量作用域在全局
@interfaceMyClass:NSObject
{

}
-(void)saySomeThing;
+(void)printName;
+(void)setMyName:(NSString*)s;
@end


#import"MyClass.h"

@implementationMyClass
staticNSString*name=@"xx";//这个name只在。m文件中有效的!在外界通过类方法来对name

操作。类似静态成员变量的效果。

intnum=10;
-(void)saySomeThing
{
NSLog(@"nameis->%@",name);

NSLog(@"numis->%d",num);
}
+(void)printName
{
NSLog(@"nameis%@",name);
}

+(void)setMyName:(NSString*)s
{
if(name!=s)
{
[namerelease];
name=[sretain];
}
}
@end


//

[MyClasssetMyName:@"xiaosong"];
[MyClassprintName];
MyClass*one=[[MyClassalloc]init];
[onesaySomeThing];
[MyClasssetMyName:@"naan"];
[MyClassprintName];
MyClass*two=[[MyClassalloc]init];
myNum=200;
[twosaySomeThing];

//

2013-01-0916:12:14.599MyClassTest[2947:c07]nameisxiaosong
2013-01-0916:12:14.600MyClassTest[2947:c07]helloinmyClass!......xiaosong
2013-01-0916:12:14.600MyClassTest[2947:c07]myNum->10
2013-01-0916:12:14.601MyClassTest[2947:c07]nameisnaan
2013-01-0916:12:14.601MyClassTest[2947:c07]helloinmyClass!......naan
2013-01-0916:12:14.601MyClassTest[2947:c07]myNum->200

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值