集锦1

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,007评论 8 265
  • (一) OBJC 面向对象的三大特征 封装:把具体的对象封装成抽象的类,隐藏内部实现,对象的属性和实现细节,仅对...
    牧马人_hlc阅读 3,388评论 0 6
  • 1. 基金选择方法: 1.1 过往业绩评价 通过晨星网优先选择5年评级5星的基金,其次是3年评级5星的基金 1.2...
    GuYJ阅读 3,126评论 1 2
  • 有棱有角性坚强, 浑身剑刺胸文章, 终盼一日春风起, ...
    如梦尘缘阅读 2,844评论 6 8

友情链接更多精彩内容