集锦1

作者: 使徒行者24 | 来源:发表于2018-09-10 10:45 被阅读0次

1.category和extension

类目只能为原有类添加方法,不可以添加实例变量(category不能给类添加实例变量。使用runtime的方式,可以添加属性字段。,通过运行时自定义setter和getter方法)。

category添加的方法不强制要求在implement文件中实现

extension声明的方法在implement文件中一定要实现

extension可以添加实例变量和属性变量。

extension常用的一个功能是,原类中readonly的属性变量,可以在extension中重新声明为readwrite。并且属性变量的读写方法都要在implement文件中实现。

2.autoreleasePool

3.runloop

4.block

5.runtime

Runtime运行时,OC的底层都是调用C语言的代码,OC调用方法包括alloc创建对象都是采用消息发送机制,objc_msgsend.

Objc_msgsend(class,SEL)

应用场景

1.在程序运行过程中,动态创建一个类(比如KVO的底层实现)

2.在程序运行过程中,动态地为某个类添加属性/方法。可以用于封装框架(想怎么改就怎么改) 这就是我们runtime机制的主要运用方向

3.遍历一个类中所有的成员变量(属性)/所有方法。(比如字典-模型:利用runtime遍历模型对象的所有属性, 根据属性名从字典中取出对应的值, 设置到模型的属性上;还有归档和接档,利用runtime遍历模型对象的所有属性)

4.Swizzling: 方法变换

6、@synthesize 和 @dynamic 分别有什么作用?

@property有两个对应的词,一个是@synthesize(合成实例变量),一个是@dynamic。

如果@synthesize和@dynamic都没有写,那么默认的就是 @synthesize var = _var;

// 在类的实现代码里通过 @synthesize 语法可以来指定实例变量的名字。(@synthesize var = _newVar;)

1. @synthesize 的语义是如果你没有手动实现setter方法和getter方法,那么编译器会自动为你加上这两个方法。

2. @dynamic 告诉编译器,属性的setter与getter方法由用户自己实现,不自动生成(如,@dynamic var)。

7、静态库和动态库的存在的形式

静态库:以.a 和 .framework为文件后缀名。

动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。(系统直接提供给我们的framework都是动态库!)

理解:.a 是一个纯二进制文件,.framework 中除了有二进制文件之外还有资源文件。 .a ,要有 .h 文件以及资源文件配合, .framework 文件可以直接使用。总的来说,.a + .h + sourceFile = .framework。所以创建静态库最好还是用.framework的形式

 不同点:

静态库在链接时,会被完整的复制到可执行文件中,如果多个App都使用了同一个静态库,那么每个App都会拷贝一份,缺点是浪费内存。类似于定义一个基本变量,使用该基本变量是是新复制了一份数据,而不是原来定义的;

动态库不会复制,只有一份,程序运行时动态加载到内存中,系统只会加载一次,多个程序共用一份,节约了内存。类似于使用变量的内存地址一样,使用的是同一个变量;

共同点:

静态库和动态库都是闭源库,只能拿来满足某个功能的使用,不会暴露内部具体的代码信息

8.使用Charles抓包

9.制作framework :

分为release和debug版本,开发一般用release版本

首先打开Xcode创建一个framework工程,选择cocoa TouchFramework,选择header

相关文章

  • 集锦1

    1.category和extension 类目只能为原有类添加方法,不可以添加实例变量(category不能给类添...

  • 关于Swift

    错误集锦1,Call can throw, but it is not marked with 'try' and...

  • xadmin 因为版本问题的错误

    针对django 2.0 xadmin 错误集锦 1.ModuleNotFoundError: No module...

  • 问题集锦1

    什么是规划应该具备的思维?那天听您对李任鹏说,应该具备更多规划的思维。 你的梦想是什么? 零售的本质是,如何理解消...

  • 面试集锦1

    JAVA基础 JAVA中的几种基本类型,各占用多少字节? String能被继承吗?为什么? 不可以,因为Strin...

  • 小题集锦1

    问:javascript中有哪些数据类型? 答: 数值 字符串 布尔值 数组 对象 null undefined ...

  • 微视集锦1

  • framework

    打包生成framework遇到问题集锦1.提示image not found

  • [天天返]-极客时间-所有课程

    极客时间所有课程: 01.大前端集锦 02.内功修炼集锦 03.后端技术集锦 04.大数据集锦 05.程序员进阶攻...

  • 和老箫一起读本书

    《THE DAILY BOOK OF CLASSICAL MUSIC》(作者有很多…)这是本集锦 Day 1 中世...

网友评论

      本文标题:集锦1

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