且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

oc-23-static

更新时间:2022-09-02 15:35:01

oc-23-static
#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *p = [Person new];
       // static p; // 不能修饰对象.
    }
    return 0;
}


//Person.h
#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    //    static int _age; static 不能修饰成员变量
}
//static - (void)test; // 不能修饰方法
@end
oc-23-static

跟C语言中的用法一样。

11.OC中的Static关键字使用

static 修饰局部变量:延长布局变量的生命周期 .
static 修饰全局变量:当前变量只能在当前文件中使用.
static 修饰函数:函数只能在当前文件中使用 .
1.关于OC中的static关键字使用

static关键字 (在变量声明前加上关键字static,可以使局部变量保留多次调用一个方法所得的值)变量为静态变量,位于程序的全局数据区,若作全局变量,可将声明放在实现文件的开始部分.
oc-23-static
2.在OC种static关键字使用误区

使用static修饰实例变量是不被允许的
使用static修饰方法也是不被允许的
3.使用static@interface和@end之间是不被允许的(写局部变量本来就不被允许)

3.static的使用场合:

1)可以定义全局变量,但是只能在Dog.m中使用
//  狗类的声明
static int m=10; //此句话也可以放到.m中
@interface Dog:NSObject
{
  int _speed;
}
-(void)run;
@end

// Dog.m文件内容
#import "Dog.h"
//#pragma mark 狗类的实现
@implementation Dog
-(void)run{
NSLog(@"m = %d”,m);
 }
@end


2)可以定义局部变量和C语言一样,延长变量生命周期
dog.m
#import "Dog.h"
#pragma mark 狗类的实现
@implementation Dog

-(void)run{
//定义局部静态变量 m
static int m=10;
NSLog(@"m = %d",m);
m++;
}

@end
main.m
int mian(){
 Dog *d = [Dog new];

 [d run];
 [d run];
 [d run];

 return 0;
}
//注意 Static型全局变量的可见性,局限于当前.m文件,其他的文件中的类,无法访问到该变量。
oc-23-static

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5310928.html,如需转载请自行联系原作者

相关阅读