美文网首页
基本语法备忘

基本语法备忘

作者: gykimo | 来源:发表于2020-11-09 15:55 被阅读0次

    修饰词

    property & synthesize

    https://www.jianshu.com/p/e27fe4be61af
    readwrite:可以产生和使用getter和setter方法.
    readonly:只产生和使用getter方法,不能产生和使用setter方法.
    assign:默认类型,在setter中直接进行赋值使用的,不进行retain操作
    retain:setter方法中,对参数进行release释放旧值,再retain新值.释放旧对象,将旧对象的值赋予输入对象,再提高输入对象的引用计数为1.
    copy:setter方法进行copy操作,与retain一样, 建立一个引用计数为1的对象,然后释放旧对象
    nonatomic:禁止多线程,变量保护,提高性能
    atomic:系统默认,这个属性是为了保证程序在多线程情况,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。
    strong:强引用,也是我们通常说的引用,其存亡直接决定了所指向对象的存亡,如果不存在指向一个对象的引用,并且此对象不再显示在列表中,则此对象会被从内存中释放.
    weak:弱引用,不决定对象的存亡,即使一个对象被持有无数个弱引用,只要没有强引用指向它,那么还是会被清除
    setter=: 对setter方法重新定义一个名字.
    getter=: 对getter方法重新定义一个名字.

    nonatomic&atomic

    atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况下,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。
    nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率。

    readonly & readwrite

    readwrite(默认):readwrite是默认的,表示同时拥有setter和getter。
    readonly: readonly 表示只有getter没有setter。
    有时候为了语意更明确可能需要自定义访问器的名字:
    @property (nonatomic, setter = mySetter:,getter = myGetter ) NSString *name;
    最常见的是BOOL类型,比如标识View是否隐藏的属性hidden。可以这样声明
    @property (nonatomic,getter = isHidden ) BOOL hidden;
    要注意修改setter或者getter的名字是存在副作用的,可能会使KVC和KVO无法正常工作。

    instancetype

    得到的返回类型和方法所在类的类型相同
    https://blog.csdn.net/wzzvictory/article/details/16994913

    id(相当于void*),id<>模版用法?

    https://blog.csdn.net/totogo2010/article/details/7714960
    https://blog.csdn.net/LonelyRoamer/article/details/7711895
    id 和void *并非完全一样。下面是id在objc.h中的定义:
    typedef struct objc_object {
    Class isa;
    } *id;
    从上面看出,id 是指向struct objc_object 的一个指针。也就是说,id 是一个指向任何一个继承了Object(或者NSObject)类的对象。需要注意的是id 是一个指针,所以在使用id的时候不需要加星号,比如,
    id foo=nil;

    isKindOfClass & isMemberOfClass

    https://blog.csdn.net/totogo2010/article/details/7714960
    -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例
    -(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例(不包括子类)

    respondsToSelector & instancesRespondToSelector

    https://blog.csdn.net/totogo2010/article/details/7714960
    -(BOOL) respondsToSelector: selector 判读实例是否有这样方法
    +(BOOL) instancesRespondToSelector: 判断类是否有这个方法。此方法是类方法,不能用在类的对象

    import

    和#include类似,但是保证头文件只包含一次。
    这个和C++里的#pragma once宏一样的作用

    NSObject

    模版?

    相关文章

      网友评论

          本文标题:基本语法备忘

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