首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
iOS 开发
dddwncty
创建于2024-09-12
订阅专栏
iOS 开发
暂无订阅
共28篇文章
创建于2024-09-12
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
atomic、锁、多线程
atomic所说的线程安全只是保证了属性的getter和setter存取方法的线程安全,并不能保证整个对象是线程安全的。atomic有个很大的问题是很慢,要比nonatomic慢20倍。 因为self很可能会被外部对象访问,被用作key来生成一锁。两个公共锁交替使用的场景就容易…
UIResponder事件响应链学习笔记
若是直接add在UIWindow上的,则其nextResponder为UIWindow对象。 事件的传递是从上到下(父控件到子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件到父控件。 因为系统默认做法是把事件上抛给父控件,所以可以通过重写自己的touches方法和…
熟悉新项目:应用Runtime(关联属性+方法交换)找到UIImage名字
在新接手的项目上做开发是比较慢的,尤其是开发、产品、设计都换了几波人的上了年纪的项目。其实我们还是可以通过一些途径来提高维护老项目的效率。比如今天(全新的开发人员、产品、设计)就碰到设计说新做的需求有一个切图是app中原来就有的,为了保持风格统一,沿用原来的切图。难道还需要定位…
来一次有侧重点的区分Swift与Objective-C
- OC出现过的绝大多数概念,比如引用计数、ARC(自动引用计数)、属性、协议、接口、初始化、扩展类、命名参数、匿名函数等,在Swift中继续有效(可能最多换个术语)。 - swift中的可选类型,是用于所有数据类型,而不仅仅局限于类。相比于OC中的nil更加安全和简明 - s…
多线程:GCD笔记整理
全称Grand Central Dispatch,可译为“牛逼的中枢调度器”。 创建的任务有 同步(sync) 和 异步(async) 两种执行方式。 队列也分为两种串行和并行。 使用GCD的步骤就是创建任务,然后把任务添加到队列中,GCD会自动从队列中取出任务放到线程中去执行。
设计模式:再严谨的单例也尽量不要使用
当我们调用单例的时候,不管是调用sharedInstance方法还是通过alloc和init方法创建,或者copy一份,都应该保证在内存中只有一份实例。避免单例递归死锁。
Masonry 源码学习整理
学习一、Masonry采用了经典的组合设计模式(Composite Pattern)。 4、在Cocoa Touch框架中,UIView被组织成一个组合结构。 学习二、Masonry采用了经典的工厂设计模式(Factory Pattern)。 1、将对象的创建和对象本身的业务处…
iOS中常见Crash总结
1、如果属性存在,利用iOS的反射机制来规避,NSStringFromSelector(@selector())将SEL反射为字符串作为key。这样在@selector()中传入方法名的过程中,编译器会有合法性检查,如果方法不存在或未实现会报黄色警告。 3、给NSMutable…
swift扩大UIButton的点击区域
参考1:Swift扩展「可以」添加存储属性参考2:OC为按钮增加点击区域
Lottie动画
Lottie做动画,专业的东西交给专业人做,真正解放程序员的生产力。 不同的设计,同一个设计不同的时期,给出的动画素材名字可能是一样的,这时候就需要开发人员自己给这些素材起名分类。 第一步:新建一个Empty文件,起名xxx.bundle。
swift算法练习笔记
一、冒泡排序及优化[TOC]五种写法的运行结果一:最先想到的(效率最低)二:对每趟比较次数做优化三:对(整体)已经排好序的做优化四:对(右半部分)已经排好序的做优化五:对(左半部分+右半部分)已经排好
iOS面向切面编程笔记:UIButton按钮防连点、NSArray数组越界、数据打点
ObjC 中实现 AOP 最直接的方法就是使用 Runtime 中的 Method Swizzling。使用Aspects, 可以不需要繁琐的手工调用 Method Swizzling。 所谓 AOP 其实就是给你的程序提供一个可拆卸的组件化能力。比如你的 APP 需要用到事件…
多线程:原理分析整理
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。 多核:几核就是真的有几个物理核心。CPU的性能主要靠提高核心工作频率来提高,由于物理限制,不能把频率无限提高,所以发展出多核心的CPU。即一枚处理器上集成多个计算引擎(内核),共…
iOS开发规范篇:清晰的初始化方法
在平常的项目开发中,经常会遇到多人同时开发一个需求的场景。同事A提供了自定义初始化方法,但是同事B却调用了默认的初始化方法,因为同事A在自定义初始化方法中做了一些特殊操作,导致同事B使用默认初始化方法却没有达到预期的效果,然后又浪费了很多精力与同事A进行沟通查找问题。 可选值可…
Xcode Debug调试汇总
遇到EXC_BAD_ACCESS这个错误,那就意味着你向一个已经释放的对象发送消息。Xcode知道这个对象是什么,所以可以让我们知道这个对象在哪里,以及这是什么时候发生的。当开启僵尸模式后,遇到EXC_BAD_ACCESS,xcode可以帮我们快速定位到出现问题的代码。 Rev…
笔记:网络基础TCP、HTTP、HTTPS(HTTP+SSL)
所谓的流量控制就是接收方让发送方的发送速率不要太快,让接收方来得及接收。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。TCP窗口的单位是字节,不是报文段,发送方的发送窗口不能大于接收方给出的接收窗口(rwnd)的大小。 为了方式网络的拥塞现象,TCP提出了一…
oc 继承关系中,实例对象内存字节对齐
``` @interface Person : NSObject @property (nonatomic, assign) char char1; @property (nonatomic, ass
swift使用闭包代替switch
作为一个传入参数,若该闭包在函数返回后才被执行的话,则该闭包就是在逃逸函数。(这样的闭包就是逃逸闭包。)你需要在参数前加上@escaping标记来表明闭包是逃逸的。
Category分析整理
如果category中的方法和类中原有方法同名,运行时会优先调用category中的方法。也就是,category中的方法会覆盖掉类中原有的方法。所以开发中尽量保证不要让分类中的方法和原有类中的方法名相同。避免出现这种情况的解决方案是给分类的方法名统一添加前缀。比如catego…
AppDelegate解耦
1、简单,只需要几行代码就可以解决。 2、被添加的每个模块都可以“享受”AppDelegate的各个生命周期。 1、每个模块都要初始化并分配内存,当FRDModuleManager里注册了大量模块时,会创建大量对象并影响App启动速度。 2、缺少模块初始化优先级,当有三个模块A…
下一页