iOS
wtwJack
这个作者很懒,什么都没留下…
展开
-
weakSelf与strongSelf的理解:
在使用block过程中,为了防止循环引用,我们通常使用weakSelf与strongSelf来防止循环引用的产生: __weak typeof(self)weakSelf = self;(不增加self的引用计数) [self doSomeBlockJob:^{ __strong typeof(weakSelf)strongSelf = weakSelf; ....原创 2019-01-14 17:45:25 · 1595 阅读 · 0 评论 -
runtime之OC消息派发与消息转发:
一:OC对象,类及元类的理解:1):OC对象分析struct objc_class { Class _Nonnull isa OBJC_ISA_AVAILABILITY;#if !__OBJC2__ Class _Nullable super_class OBJC2_UNAVAILABLE; co...原创 2019-02-19 18:33:27 · 301 阅读 · 0 评论 -
self与super区别:
一:self与super定义:self:类似java中的this,表示当前接收消息的指针。(消息的接收者);super:OC中编译预指令,没有特别指代的对象。(注意,super并不表示self的父类,只是编译器的一个指令) 二:self与super的区别1):理解:我们都知道,OC中方法的调用,本质上是在OC Runtime期间发送消息。[self eat]会替换成...原创 2019-02-25 11:05:10 · 750 阅读 · 0 评论 -
UITableView相关理解——cell复用机制
一:cell复用原理:UITableView创建之后,会维持一个UITableViewCell的复用池;当复用池中没有可复用的UITableViewCell时,会创建新的UITableViewCell,用于显示;当复用池中有可复用的UITableViewCell时,则会取出复用池中的UITsbleViewCell,用于cell显示。 二:cell创建:当使用dequeueReusa...原创 2019-02-19 16:00:17 · 992 阅读 · 0 评论 -
UITableView相关理解——cell动态高度
注意:使用UITableView时,一般均需配置UITableView的两个代理(UITableViewDelegate与UITableViewDataSource)。UITableViewDelegate:用于管理cell显示的自定义化设置(cell将要显示时的配置),cell的行高设置,cell的头,尾部的数据展示等等。UITableViewDataSource:UITableVi...原创 2019-02-19 12:06:50 · 423 阅读 · 0 评论 -
runtime之KVO理解
一:KVO的基本使用:添加观察:addObserver:forKeyPath:options:context:移除观察:removeObserver:forKeyPath:响应观察的方法:- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSK...原创 2019-02-22 14:15:20 · 205 阅读 · 0 评论 -
KVC理解
一:KVC基础使用:(KVC主要对三种类型进行操作:基础数据类型及常量,对象类型,以及集合类型) 1):KVC setter方法: setValue:forKey: (属性为key,赋值)setValue:forKeyPath: (多级访问,不仅可以对当前对象属性进行赋值,也可以对“深层”对象的属性进行赋值)2):KVC getter方法:valueForKe...原创 2019-02-22 11:36:37 · 277 阅读 · 0 评论 -
深拷贝与浅拷贝
1):定义:深拷贝:对原对象真正复制了一份,复制对象指向新的内存地址;(内容复制)浅拷贝:并没有对原对象进行复制,复制对象与原对象指向同一内存地址;(指针复制) 2):本质:原对象与拷贝对象的内存地址是否一致; 3):释例:非容器不可变对象(NSString)NSString *str = @"xxxxx";NSString *copyStr = [str ...原创 2019-01-23 12:02:36 · 99 阅读 · 0 评论 -
iOS Runtime初解
原理:主要在运行时,将两个方法的实现(impl)进行交换,从而达到调用a(b),实现b(a);只有在method_swizzling语句执行完之后,方法交换才起作用。 交换时机:应该只在+ (void)load方法中实现method_swizzling;(在OC的运行时中,+load是在一个类被初始装载时调用,+initialize是在应用第一次调用该类的类方法或实例方法前调用...翻译 2019-01-15 12:01:30 · 151 阅读 · 0 评论 -
分类,类扩展理解:
一:分类(类别):OC中Category是Objective-C2.0之后添加的语言特性,它称为分类,或者类别;分类的主要作用,是为已经存在的类添加方法。(不改变已经存在类的前提下,为类动态的添加一些方法)。二:分类的源码解析:struct objc_category { char * _Nonnull category_name ...原创 2019-02-25 18:33:27 · 303 阅读 · 0 评论