• Objective-C基础4


    1.强指针:默认的情况下所有的指针都是强指针,关键字__strong

    弱指针:__week关键字修饰的指针

    2.ARC:编译器将自动在代码合适的地方插入retain、release、autorelease

    ARC的判断准则,只要没有强指针指向对象,对象就会被释放

    3.判断是否是ARC

    查看项目信息;不能使用retain、release、autorelease、retainCount,在dealloc方法中不能使用[super dealloc]

    正常创建对象,不用手动释放对象

    4.ARC下循环引入的问题,解决办法一端使用强指针一端使用弱指针

    5.@property参数

    strong强指针

    week弱指针

    6.__week Person *p=[[Person alloc]init];//不合理,对象一创建出来就被释放掉,对象释放掉后,ARC把指针设置为nil

    7.分类的使用,扩展原来类的方法

    #import "Student.h"
    
    @interface Student (study)
    -(void)run;
    @end
    #import "Student+study.h"
    
    @implementation Student (study)
    -(void)run{
        NSLog(@"study run");
    }
    @end

    分类里的方法跟原来的方法一样使用,如果分类中和类中方法名一样,优先调用分类的方法

    8.非正式协议

    所谓的非正式协议就是类别,即凡是NSObject或者其子类的类别,都是非正式协议

    9.扩展-特殊的分类

    分类名为空,可以增加类的实例变量和方法,但是方法须在类本身的.m文件中实现

    变量和方法相当于私有

    10.block的定义

    int (^myblock)(int,int)=^(int a,int b ){   };

    调用方式:

    myblock(1,2);

    可以再给myblock赋值

    22.typedef bolck

    typedef int (^Myblock)(int,int)=^(int a,int b ){   };

    Myblock myblock1,myblock2;

    23.block内可以访问外部的变量

    当定义block的时候,block会把外部变量的值以const的方式复制一份,放到block所在的内存中,不能修改

    全局变量可以修改

    外部变量加__block那么block内部不再以const的方式拷贝,可以在block内部修改,再后面的代码中,全部使用的是堆区空间

    24.block的应用场景,把代码块作为参数传递

    或者block作为返回值

    25.助记符 inlineBlock

    26.protocol类似java的借口,但协议中的方法不是全部必须实现

    步骤:

    定义协议

    @protocol 协议名称<NSObject>

    @end

    采纳协议

    @interface Person:NSObject <协议1,协议2>

    @end

    实现协议的方法

    当遵守了某个协议后,就有了这个协议中所有方法的声明

    协议还可以遵守其他的协议

    OC不能继承多个类,但是能够遵守多个协议

    27.protocol方法的修饰符

    必须实现@required

    选择实现@optional

    28.id类型后面加<协议名>表示只能赋值遵守了协议的对象

    类名后面加<协议名>表示只能赋值遵守了协议的当前类的对象

    29.协议代理模式

    传入的对象,代替当前类完成了某个功能,称为代理模式

    30.@protocol

    在.h文件中用@protocol 协议名 代替import导入协议

    在.m文件中导入协议

    在main文件中再使用时导入协议

  • 相关阅读:
    socket使用大全
    UIImageView控件使用(转)
    多线程,socket,http,asihttpRequest,等总结集合
    ios 如何判断字符串含有中文字符?
    修改UISearchBar
    abc222_e Red and Blue Tree(树上差分+01背包)
    2020icpc上海部分题解
    abc215_e Chain Contestant(状压dp)
    bzoj3238 差异(后缀数组+单调栈)
    NCD2019部分题解
  • 原文地址:https://www.cnblogs.com/fanglove/p/4946087.html
Copyright © 2020-2023  润新知