
ios
文章平均质量分 76
仕兴
keep learning,不学习,何以进步
展开
-
ios小窗开发入门
【代码】ios小窗开发入门。原创 2023-03-25 13:28:34 · 770 阅读 · 0 评论 -
ios内存管理
ios内存管理方案TaggedPointer我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法;增加了支持甘特图的mermaid语法1 功能;增加了 多屏幕编辑 Mar原创 2021-08-30 00:06:10 · 260 阅读 · 0 评论 -
block原理探索
1 block的常用写法分类在讲解block原理之前,先介绍绝大部分block的使用类型。1.1 不访问外部变量的带参的block1.2 不访问外部变量的不带参的block1.3 访问外部的全局变量的block1.4 访问外部的局部变量的block#1.5 访问外部的静态局部变量2 从C++代码中窥探block的实现2.1 block本质上是一个OC对象在窥探block的实现之前,请先看下图的demo的运行结果,从代码及其运行结果可以看出block就是一个OC对象,通过调用该对象的原创 2021-08-16 10:43:37 · 390 阅读 · 0 评论 -
当你调用OC方法时,系统是怎么找到这个方法的具体实现的?
我们知道,当执行一个OC方法时,比如执行Person类的类方法classMethod或者Person类的实例方法instanceMethod,最终都是会被转成一个名为objc_msgSend()的函数调用。所以说,OC方法的调用本质上就是一个C函数的调用。那该函数里面的执行流程是怎么样的呢?[Person classMethod]; //调用Person类的classMethod类方法[person instanceMethod]; //Person类的实例的instanceMethod实例方法.原创 2021-08-16 10:25:54 · 176 阅读 · 0 评论 -
RAC框架基础API的使用总结与源码浅析
基础概念:RACSubject & RACSignal 的区别 在RAC框架中,核心就是信号(由RACSignal类表示)。从下图可以看出,几乎所有的操作都是围绕着信号的创建、发送、订阅和销毁进行的。RACSignal RacSignal是所有信号类的基础类,换句话说,所有信号基本都是继承自RacSignal,但RACSignal的实例并不支持发送信号,只是信号传递的媒介。这么说有些抽象,请看下面的两个demo。RACSignal demo1 下面的代码是RACSig原创 2021-08-16 10:23:02 · 403 阅读 · 0 评论 -
ios性能优化总结
本文内容分为两大部分:1 ios常用性能分析工具; 2 性能优化常见套路。所以如果对第1部分不感兴趣,可以直接看第2部分。ios中性能优化常用的instrument工具 现代管理学之父彼得德鲁克曾经说过:“如果你不能衡量,那么你就不能有效增长”。类似的,如果对当前程序的代码执行耗时、特定列表的滑动fps数据都不了解,就不能高效地对代码进行优化,所以在讲解具体的性能优化策略前,先来介绍几个笔者常用的性能测试工具。。time profile time profile是一款用于测量特定的一段时间原创 2021-08-16 10:01:46 · 982 阅读 · 0 评论 -
MJRefresh源码阅读笔记
读源码之前需要掌握的基础概念UIView的生命周期先看如下的demo代码@interface GreenView : UIView@end@implementation GreenView- (instancetype)init //2{ self = [super init]; if (self) { } return self;}- (instancetype)initWithFrame:(CGRect)frame //3{ self =原创 2020-08-17 09:58:23 · 382 阅读 · 0 评论 -
VC的shouldAutorotate和supportedInterfaceOrientations方法的学习demo
ios屏幕旋转:当全屏模式(此时是横屏模式)时,把app退后台然后再进入app时,横屏模式变成竟然变成了竖屏模式的解决方法。步骤1:先看下图苹果文档的discussion部分。但这句话应该这样读:①This method returns the total set of interface orientations supported by the app.意思是该方法返回的是app所支持的界面旋转方向集合。②对于When determining whether to rotate a particu原创 2020-06-19 21:41:19 · 2392 阅读 · 0 评论 -
ios基础学习笔记
资源位置的问题资源分文件(比如图片)和文件夹图片资源拖拽一张普通图片到xcode的工程的Assets.xcassets中。拖拽3张相同内容的1x 、2x、 3x普通图片到xcode的工程的Assets.xcassets中。拖拽一张普通图片到xcode的工程的代码所属的文件夹里面。在代码里面分别读取Assets.xcassets里面和xcode的工程的代码所属的文件夹里面的图片。代...原创 2020-02-26 15:19:24 · 374 阅读 · 0 评论 -
IOS版的MMKV框架解析,看这一篇就够了?
IOS版的MMKV框架解析,看这一篇就够了?MMKV了解MMKV前需要了解的基础知识ProtocolBuffer(下文检查PB)demo:基础知识二进制串Tag - Length - Value 的数据存储方式在MMKV中,使用的是Length-Value的方式进行存储!!!!PB相对于json的优点:PB相对于json的缺点:CRC(Cyclic Redundancy Check,循环冗余校验)...原创 2019-12-28 22:08:31 · 3014 阅读 · 0 评论 -
xcode添加符号断点
1 切到断点列表栏目,点击左下角的 + 号,选择symbolic breakPoint。2 输入要断点的方法名,然后点击 "add action"按钮。3 此时可以看到你新加的断点方法。4 运行项目,此时xcode会停在你的断点方法中。...原创 2019-12-08 22:33:09 · 2441 阅读 · 0 评论 -
ios: 计算某种字体类型的某种大小的字符串的所占用屏幕的宽高
计算某种字体类型的某种大小的字符串的所占用屏幕的宽高有2种方式方式1,通过NSString的sizeWithAttributes方法方式2,通过NSMutableAttributedString有2种方式方式1,通过NSString的sizeWithAttributes方法UIFont *strFontStyleAndSizeFont = [UIFont fontWithName:@"Pin...原创 2019-10-26 17:41:41 · 479 阅读 · 0 评论 -
Runtime06类里面的方法缓存原理
每一个类、每一个元类都有一个cache_t对象,cache_t对象是一个结构体,里面有3个成员变量:①存储了你之前调用过的某个类对象或者实例对象的方法(你调用过的类方法会存储在元类的cache_t对象里面,而你调用过的实例方法会存储在类的cache_t对象里面)的哈希表(下图的struct bucket_t *_buckets),该哈希表只是通过一个数组实现的,解决哈希冲突的方法是线性探测法,而...原创 2019-09-15 20:38:51 · 334 阅读 · 0 评论 -
Runtime05Block原理
例子1main.m文件的代码如下:#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { int age = 1; void (^myBlock)(int, int) = ^(int a, int b) { ...原创 2019-09-14 21:27:57 · 377 阅读 · 0 评论 -
xcode10.2.1 把.h 和.m文件加入工程里面的某个文件夹【可确保xcode界面看到的目录组织方式和真实文件系统看到的一致】的步骤图解
步骤1 创建一个新的class文件(同时包含.h 和.m文件)2 选择Cocoa Touch Class,并点击next3 输入类名并点击next4 直接点击create5 选中刚才创建的文件(上图中的Test.h和Test.m文件),按鼠标右键,选择New Group from Selection6 输入文件夹(在xcode中叫Group)的名字7 选中Test.h文件,按鼠标右键8 xcode...原创 2019-07-06 18:17:21 · 1443 阅读 · 0 评论 -
CALayer(假设有个实例A)的convertPoint: fromLayer:方法的fromLayer的参数只能填该Layer的父Layer,因为这样才能保证该方法的返回值的位置是基于实例A计算的
验证例子1.界面开发截图2.ViewController的代码#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UILabel *layerView;@property (nonatomic, strong) CALayer *blueLayer;...原创 2019-07-11 18:25:48 · 329 阅读 · 0 评论 -
ios滑动事件的打印栈
ios滑动事件重写UIViewController的- (void)touchesBegan:withEvent:方法、- (void)touchesMoved:withEvent:方法和- (void)touchestouchesEnded:withEvent:方法开始触摸屏幕滑动屏幕手指离开屏幕设置一个UIButton的监听方法按钮的监听事件重写UIViewController的- (voi...原创 2019-08-23 22:07:02 · 222 阅读 · 1 评论 -
ios事件-触摸事件1(寻找点击的view)
先看效果图本文中,凡是看到xxx(),即表示xxx是一个函数或者方法!!!事件分为事件传递和事件响应,其中,事件响应又称事件处理。具体代码FindViewViewController的代码如下:@interface FindViewViewController : UIViewController@end//--------分隔符,分隔.h文件和.m文件-------------@...原创 2019-08-30 14:06:53 · 666 阅读 · 0 评论 -
ios事件-触摸事件2(手势 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()的关系)
ios事件-触摸事件2(手势 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()、touchesCancelled()的关系)先看效果图本文中,凡是看到xxx(),即表示xxx是一个函数或者方法!!!事件分为事件传递和事件响应,其中,事件响应又称事件处理。具体代码FindViewViewContr...原创 2019-08-31 12:43:07 · 2252 阅读 · 0 评论 -
ios事件-触摸事件3(UIButton 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()的关系)
ios事件-触摸事件3(UIButton 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()、touchesCancelled()的关系)先看效果图本文中,凡是看到xxx(),即表示xxx是一个函数或者方法!!!事件分为事件传递和事件响应,其中,事件响应又称事件处理。具体代码ButtonVC的代码...原创 2019-08-31 15:14:57 · 1070 阅读 · 0 评论 -
Runtime01对象的本质
查看NSObject的对象在内存的内容,有两种方法方法一:第1步第2步第3步方法二,用lldb命令来实现打印对象:p(等价于print)表示打印、po表示打印对象。读取内存:memory read/数量+格式+字节数 内存地址x/数量+格式+字节数 内存地址//举例:x/3xw 0x10010 ,其中,第一个x表示读内存,3表示输出的内容的个数,第二个x表示16进...原创 2019-09-01 20:44:41 · 161 阅读 · 0 评论 -
Runtime02KVO和Category原理
界面效果就是一个空白界面:上代码:Person类:@interface Person : NSObject@property (assign, nonatomic) int age;@property (assign, nonatomic) int height;@end//---------分割线,分隔一个类的.h文件和.m文件-------#import "Person.h"...原创 2019-09-07 17:23:23 · 155 阅读 · 0 评论 -
Runtime03load()和initialize()的加载顺序
demo项目的目录结构上代码:main.m (啥都没写):#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { return 0;}Person类:@interface Person : NSObject@end//---------分割线,分隔一个类的.h文...原创 2019-09-12 20:58:06 · 225 阅读 · 0 评论 -
Runtime04Category和关联对象
先看一个demodemo的目录结构如下具体代码如下main.m :#import <Foundation/Foundation.h>#import "Person.h"#import "Person+Test.h"int main(int argc, const char * argv[]) { @autoreleasepool { Perso...原创 2019-09-13 09:41:22 · 153 阅读 · 0 评论 -
coreData操作数据库的步骤
1.创建一个Data Model 文件2.创建一个Entity,名为MyFirstEntity3.为了防止崩溃,需要做如下操作:4.创建Data Model文件包含的Entity5.在你的ViewController里面操作数据库,ViewController的代码如下://// ViewController.m// TestCoreData//#im...原创 2019-07-14 13:04:03 · 572 阅读 · 0 评论