iOS 知识汇oc static

Posted wp7ers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 知识汇oc static相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

iOS中OC面试题整理

iOS知识汇bool BOOL 的小坑。

iOS知识汇view 点击位置获取

iOS 知识汇判断一串字符串是否都是汉字

iOS开发(OC)中的命名规范

iOS知识汇使用masonry的一个坑