美文网首页
OC 基础 2019-08-14

OC 基础 2019-08-14

作者: 金樽明月 | 来源:发表于2019-08-14 17:25 被阅读0次

学习路线图


image.png
  1. ARC 只是 OC 编译器的一个特性,编译器自动在合适的地方加上了release或autorelease ,不是 运行时的垃圾回收机制。
  2. ARC 的特点:
    1)不允许调用release,retain,retainCount
    2)允许重写dealloc,但是不允许调用[super dealloc]
    3)@property的参数:
    strong:相当于原来的retain(适用于OC对象类型),成员变量是强指针
    weak:相当于原来的assign,(适用于oc对象类型),成员变量是弱指针
    assign:适用于非OC对象类型(基础类型)
  3. 分类 Category
    作用:在不改变原来类的基础上,为类扩充一些方法。(类似 js 中直接在原型上添加方法,但是 js 不推荐,不容易管理)
    注意事项:
    1. 只能添加方法,不能添加属性
    2. 分类的调用顺序:调用最后一个参与编译的分类
  4. 分类和类扩展的区别:
    1、类别中只能增加方法;
    2、是的,你没看错,类扩展不仅可以增加方法,还可以增加实例变量(或者合成属性),只是该实例变量默认是私有类型的(作用范围只能在自身类,而不是子类或其他地方);
    3、类扩展中声明的方法没被实现,编译器会报警,但是类别中的方法没被实现编译器是不会有任何警告的。这是因为类扩展是在编译阶段被添加到类中,而类别是在运行时添加到类中。
    4、类扩展不能像类别那样拥有独立的实现部分(@implementation部分),也就是说,类扩展所声明的方法必须依托对应类的实现部分来实现。
    5、定义在 .m 文件中的类扩展方法为私有的,定义在 .h 文件(头文件)中的类扩展方法为公有 的。类扩展是在 .m 文件中声明私有方法的非常好的方式。
  5. block
    oc 特有的一种数据类型。被 block 访问的外部变量需要用 __block 修饰
  6. Protocol
    1. @required 和 @optional
    2. id和instancetype的区别
      1)instancetype只能作为函数或者方法的返回值
      2)id能作为方法或者参数的数据类型、返回值,也能用来定义变量。
      3)instancetype对比id的好处:
      能精确的限制返回值的具体类型。
  7. Fundation 框架
    1. NSString、NSMutableString、NSURL、NSRange、NSNumber、NSValue、NSDate
    2. NSArray
      1> 只能存放任意OC对象, 并且是有顺序的。
      2> 不能存储非OC对象,比如int\float\double\char\enum\struct等。
      3> 它是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素.
      4> makeObjectsPerformSelector
      5> enumerateObjectsUsingBlock
    3. NSDictionary
  8. NSFileManager
  9. iOS 沙盒机制
  10. Copy 概念:
    1. 需要遵守对应的协议,比如: NSCopying。也有 mutableCopy
    2. 只有源对象和副本对象都不可变时,才是浅复制,其它都是深复制
    3. @property 的内存管理策略
      1> copy : 只用于NSString\block
      2> strong : 除NSString\block以外的OC对象
      3> weak : 当2个对象相互引用,一端用strong,一端用weak
      4> assgin : 基本数据类型、枚举、结构体(非OC对象)
  11. OC 中的单例模式
    ``Tools.h

import <Foundation/Foundation.h>

@interface Tools : NSObject<NSCopying>
@property (nonatomic,assign) int num;
@property (nonatomic,copy) NSString *text;

  • (instancetype)shareIntances;
    @end

Tools.m

import "Tools.h"

static Tools *instance = nil;
@implementation Tools

  • (instancetype)shareIntances
    {
    if (instance==nil) {
    instance = [[self allocWithZone:NULL] init];
    }
    return instance;
    }
  • (id)copyWithZone:(NSZone *)zone
    {
    return self;
    }
  • (id)allocWithZone:(NSZone *)zone
    {
    @synchronized(self)
    {
    if (instance == nil)
    {
    instance = [super allocWithZone:zone];
    return instance;
    }
    }
    return instance;
    }

-(id)retain
{
return self;
}

-(NSUInteger)retainCount
{
return NSUIntegerMax;
}

-(oneway void)release
{
}

-(id)autorelease
{
return self;
}
@end``

相关文章

  • OC 基础 2019-08-14

    学习路线图 ARC 只是 OC 编译器的一个特性,编译器自动在合适的地方加上了release或autoreleas...

  • 789艺术广场和老井西餐厅

    2019-08-14 798艺术广场 2019-08-14 老井西餐厅

  • OC知识点整理-(零)内容概要

    我们在OC中基础中,尝尝会被问到下面几个基础方面的问题。 OC基础 Category 关联对象 代理,通知 KVO...

  • 无标题文章

    OC基础语法 //整型 NSIntegera =10; //NSLog是OC里面的打印函数 NSLog(@"a =...

  • 基础绘制

    1.基础画线OC: swift: 2.画弧线OC Swift 3.画圆(椭圆)OC Swift 4.画弧OC Sw...

  • OC-基础总结(二)

    OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 OC内存管理 -...

  • react-native 基础知识链接

    OC基础知识-https://www.cnblogs.com/twcblog/p/4443189.html OC-...

  • iOS培训总结

    一:OC基础语法1 //整型 NSInteger a =10; //NSLog是OC里面的打印函数 NSLog(@...

  • OC 基础

    iOS 开发三大特性: 封装, 继承, 多态 OC中所有对象的交互都是通过指针实现的 继承: 子类(也叫孩子类)继...

  • OC基础

    Oc基础 1、#import的用途 1>#import与#include一样,拷贝文件的内容 2>可以自动防止文件...

网友评论

      本文标题:OC 基础 2019-08-14

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