美文网首页
iOS基础总结_语法

iOS基础总结_语法

作者: 小黑Unity_齐xc | 来源:发表于2019-06-25 08:40 被阅读0次

    1、@interface 、@ implementation

    @interface表示类的声明
    其声明的内容,对于调用者可见(类似于java的public);
    @implementation表示类的实现
    其声明的内容,仅自己可见(类似于java的private);
    

    2、@class、#import

    #import会包含这个类的所有信息,包括实体变量和方法;
    @class只是简单的一个声明告编译器有这个类不让其报错,
    那么.m中要用到引入的类的方法和属性时,不还是要#import头文件一次;
    
    注意:
    如果A依赖B,B又依赖A,如果全部使用import,编译会报错,应使用class;
    

    3、#import的“”和<>

    #import"  " 是自己创建的文件;#import< > 是系统的文件
    

    4、atomic与nonatomic

    atomic:默认,原子性,数据同步,多线程中使用
    nonatomic: 非多线程中使用,性能高一些
    

    5、readwrite与readonly

    readwrite:默认,自动生成存取器
    readonly:只生成getter不会有setter方法
    readwrite、readonly 作用是控制成员变量的访问权限。
    

    6、strong与weak

    强弱引用,与java类似
    strong强引用,决定内存不被释放;
    weak弱引用,无法决定内存释放被释放;
    

    7、assign、copy、retain

    assign:默认类型,setter方法直接赋值,不进行任何retain操作,不改变引用计数。
    一般用来处理基本数据类型
    (如果a和b指向同一块内存,当a不再使用时,如果直接释放,b使用该内存时,会出crash)
    
    retain和copy都是复制的意思,不过增加了引用计数
    (如果a和b指向同一块内存,计数会累加,当计数为0时,可以释放)
    
    区别:
    retain拷贝的是指针;
    copy拷贝的是内容;
    

    8、extern 、static

    extern类似于java的static,作用域:整个app,extern可置于变量或者函数前。
    在另一个文件中,通过external全局变量的声明,就可以使用全局变量
    static类似于java类的全局变量,作用域:当前类。
    

    9、类方法、对象方法

    类方法以 + 开头,调用方式如:[A  m1];
    对象方法以 - 开头,调用方式如:[a m2];
    

    10、@property (class)

    如:@property (class, nonatomic, assign, readonly) NSInteger userCount;
    表示:给类增加一个属性。
    其实就是给类增加了一个setting 和getter方法,+方法,注意没有生成实例变量,
    这个属性,只是增加getting setting方法,我们需要自己添加静态变量
    
    static NSInteger _userCount = 0;
    

    11、@property定义在.h与.m中的区别

    在.m文件中,相当于是@private权限,子类无法访问,也无法修改其权限;
    在.h文件中,默认是@protected权限,子类可以访问,可以做权限修改;
    

    12、static的作用

    static关键字可以修饰函数和变量,作用如下:
    一、隐藏
    通过static修饰的函数或者变量,在该文件中,所有位于这条语句之后的函数都可以访问,而其他文件中的方法和函数则不行;
    
    二、静态变量
    类方法不可以访问实例变量(函数),通过static修饰的实例变量(函数),可以被类方法访问;
    
    三、持久
    static修饰的变量,能且只能被初始化一次;
    
    四、默认初始化
    static修饰的变量,默认初始化为0;
    

    13、#pragma mark

    将代码分成一个个逻辑块,便于查找

    14、类扩展

    以ViewController为例,语法:
    @interface ViewController ()
    
    @end
    可定义属性,如:@property (nonatomic , weak) IBOutlet UILabel *label;
    作用:非定义在头文件中,外部类不能使用该类的属性;
    

    15、static

    1、局部变量中:
    只会被初始化一次,即使是在成员方法中,直到app结束,才释放内存;
    
    2、全局变量:
    内存同上,作用域为当前类,不能通过extern引用
    (如果是未用static修饰全局变量,作用域为整个app,可被其他类通过extern引用)
    

    相关文章

      网友评论

          本文标题:iOS基础总结_语法

          本文链接:https://www.haomeiwen.com/subject/tquzqctx.html