码迷,mamicode.com
首页 > 移动开发 > 详细

【iOS 知识汇】oc static

时间:2020-06-13 15:48:24      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:静态变量   变量   声明   ati   insert   super   ace   访问   style   

oc static 跟java有所区别。

1.全局只有在本类可以访问。出文件就不可访问了,区别与java.

2.类方法可以访问static 变量。oc + 方法类似java静态方法。

3.一个静态变量所以实例对象共用。分配在堆区内存。相同java。

4.方法中声明static 变量。只有在方法中访问。同样一个静态变量所以实例对象共用。(严重区别与java,java在方法中不可以声明静态 static)

5.(重要 )静态变量只初始化一次。如果方法中声明的也是如此。

6.static 变量不初始化,均有默认值。比如int a ,默认值为0 ;

#import <Foundation/Foundation.h>
static int a ;//只能在@interface和@end外面定义。
@interface StaticTest : NSObject
//static int b ;
-(void)st ;
+(void)printA;
@end
static int c = 1000 ;
#import "StaticTest.h"
static int d ;
@implementation StaticTest
-(instancetype)init{
    self = [super init];
    a++ ;
    return self;
}

-(void)st{
    static int e ;
    NSLog(@"e:%d",++e);
}

+(void)printA{
    NSLog(@"a:%d",a);
}
@end
#import <Foundation/Foundation.h>
#import "StaticTest.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        
       
        StaticTest* test =[StaticTest new];
        NSLog(@"a:%@",[StaticTest class]);
        
        [test st];
        [test st];
        [test st];
        [test st];
        StaticTest* test1 =[StaticTest new];
       
        [test1 st];
        [StaticTest printA];
    }
    return 0;
}
2020-06-13 15:06:33.670 test[1955:43303] Hello, World!
2020-06-13 15:06:33.672 test[1955:43303] a:StaticTest
2020-06-13 15:06:33.673 test[1955:43303] e:1
2020-06-13 15:06:33.673 test[1955:43303] e:2
2020-06-13 15:06:33.673 test[1955:43303] e:3
2020-06-13 15:06:33.673 test[1955:43303] e:4
2020-06-13 15:06:33.673 test[1955:43303] e:5
2020-06-13 15:06:33.673 test[1955:43303] a:2
Program ended with exit code: 0

 

【iOS 知识汇】oc static

标签:静态变量   变量   声明   ati   insert   super   ace   访问   style   

原文地址:https://www.cnblogs.com/mamamia/p/13114662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!