
iOS基础及进阶
文章平均质量分 70
iOS日常学习记录,及遇到问题笔记
简简单单lym
既然需要信仰,那就面向信仰编程
展开
-
socket.io基本使用及介绍
主要介绍socketio的特性及 消息解析后的格式原创 2022-04-14 18:09:24 · 5143 阅读 · 0 评论 -
记 dyld:Liburary not loaded: /System/Litrary/Framwork/CoreServices.framework 错误 image not found
记述某次偶然升级后,发现个别用户出现崩溃 问题,日志及崩溃堆栈显示某行代码异常;但是综合分析觉得这里崩溃不应该; 多个机型及系统版本测试,发现在特定系统上崩溃,对改系统版本测试启动后崩溃信息如下:引起上述崩溃有以下几种:三方动态库引入方式不对;在以前的xcode版本动态库使用和静态库是有区别,如果引入方式不对,会出现该出错,在最新的xocde中以简化引入,同时出错的库是系统库,综述排除此种可能;系统库 引入异常,经过重新引入库测试多次后 排除此种可能系统版本,导致的问题,检查各个模块最低的系原创 2021-04-19 09:36:35 · 237 阅读 · 0 评论 -
iOS底层原理-8.卡顿及优化
文章目录1. 卡顿的原因2. 卡顿优化3.卡顿的检测1. 卡顿的原因GPU的渲染是通过cpu计算好的结果给GPU来进行渲染的,每一帧的画面都得经过CPU计算然后渲染到GPU,在CPU计算的时候GPU就可能出现大量的等待时间;GPU渲染如果慢于CPU,可能导致CPU计算好的数据无法渲染;2. 卡顿优化cpu尽量使用轻量级的对象,eg:如果不需要使用事件,可以使用CALayer代替U...原创 2020-01-22 11:11:09 · 371 阅读 · 0 评论 -
iOS底层原理-8.内存管理
文章目录1. NSTimer,CADisplayLink 使用注意事项1. NSTimer,CADisplayLink 使用注意事项会对target产生强引用,造成循环引用问题; self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCount) userInf...原创 2019-12-08 15:34:22 · 310 阅读 · 0 评论 -
IOS底层原理 - 1.OC对象本质
综述: objective-c 的代码(clang -rewrite-objc mian.m -o mian.cpp)最终转成c/c++代码,然后转成汇编代码,最终以机器码执行;那么OC的对象最终在转成c、C++代码后是什么呢?其实C/C++中都能容纳不同类型的数据结构就是结构体,所以Objective-C 的对象/类主要是基于结构体实现注:生成arm64架构的cpp文件1:一个oc对象的内存...原创 2019-08-17 15:12:22 · 3298 阅读 · 0 评论 -
IOS底层原理 -5.运行时(1)
OC是一种动态性比较强的语言,所有的函数调用都是基于消息机制;简介参照:isa指针;isa在前面介绍过,可以实例对象可以通过其找到类对象,类对象通过isa可以找到原类对象;在arm64后isa并不直接是Class类型,而是union,同时用位域位域(w3c)来存储更多信息(struct test{uintptr_r nonpointer :1; }), char _bool;//将所有BO...原创 2019-09-08 09:55:06 · 323 阅读 · 0 评论 -
IOS底层原理 -5.运行时(2)
文章目录1. 面试题:isKindClass和isMemberOfClass1. 面试题:isKindClass和isMemberOfClass NSLog(@"%d",[[NSObject class] isKindOfClass:[NSObject class]]); //这里最终比较的是NSObject类对象的metaClass是不是与其类对象是不是相同,结...原创 2019-09-11 09:25:28 · 2462 阅读 · 0 评论 -
IOS底层原理 -6.runloop
文章目录1. 简介2. Runloop 对象获取1. 简介iOS 中负责程序运行循环,在程序运行过程中循环做一些事情;保持程序的运行,程序运行时会在main函数中创建一个runloop,负责主线程的持续运行;及处理app中的各种事件的响应,例如:NSTimer,UITouch等;在程序需要处理事件时候runloop就唤起线程,当不许处理事件的时候线程进入休眠状态,这样可以节省线程资源。在OC...原创 2019-09-24 14:13:11 · 475 阅读 · 0 评论 -
IOS底层原理 -7.多线程
文章目录1. iOS中多线程方案2. GCD 同步,异步,串行,并行2.1 从一到面试题入手认识下GCD:2.2 多线程易混淆的名词2.3 面试题解析3 多人线程与runloop3.1 面试题13.2 面试题24 队列组5 线程安全问题1. iOS中多线程方案最底层API pthread: 是一套通用的跨平台的多线程API,是基于c语言,线程的生命周期需要手动管理;NSThread:是对...原创 2019-09-28 12:01:17 · 322 阅读 · 0 评论 -
五.控件--导航控制器
创建方法控制器常见的创建方式有以下几种 * 通过storyboard创建 * 直接创建 // 创建导航控制器的根控制器 ViewController *vc = [[ViewController alloc] init]; // 导航控制器也是需要有根控制器 UINavigationController *nav = [[UINavigationController a原创 2016-06-05 16:56:21 · 281 阅读 · 0 评论 -
七, seg(属性)
什么是SegueStoryboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue) Segue的属性每一个Segue对象,都有3个属性:唯一标识@property (nonatomic, readonly) NSString *identifier;来源控制器@property (nonatomic, readonly) id sourceVie原创 2016-09-22 22:11:29 · 721 阅读 · 0 评论 -
六,UITabBarController
简介原创 2016-09-22 22:08:39 · 295 阅读 · 0 评论 -
八,事件
简介分为三大类:触摸事件- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;- (void)touchesEnded:(NSSet *)touches withEvent:(UIEven原创 2016-09-26 20:06:50 · 297 阅读 · 0 评论 -
ubuntu 编译licode
几个常用的命令:1,解压 tar -zxvf aliedit.tar.gz2,复制sudo cp -i test.c /local/arm3,删除1,安装Java,参考: Ubuntu安装JDK7/JDK8的两种方式 这里我只记录第一种:1.添加ppasudo add-apt-repository ppa:webupd8team/javasudo apt-get update2.安原创 2017-02-04 10:42:47 · 1037 阅读 · 0 评论 -
Effective Objective-- 第一章
摘录: 1. 将引入头文件的时机尽量拖后,只在确有需要时才引入,这样就可以减少类的使用者所需引入头文件的数量。原创 2017-06-01 08:26:59 · 247 阅读 · 0 评论 -
Effective Objective-- 对象,消息,运行期
1:属性 * 在实现自定义初始化方法的时候,一定以要遵循属性定义中所宣称的“copy”语义,因为属性定义就相当于类和待设置的属性值之间所达成的契约: - (instancetype)initWithChat:(NSString*)chat{ if (self = [super init]) { _chat = [chat copy]; return原创 2017-06-08 08:34:47 · 239 阅读 · 0 评论 -
oc 运行时
1. runtime详细描述一、runtime简介 The Objective-C language defers as many decisions as it can from compile time and link time to runtime. Whenever possible, it does things dynamically. This means that the la原创 2019-04-10 13:22:18 · 375 阅读 · 0 评论 -
iOS 日常记录笔记
一,获取导航栏相关属性获取包含导航栏的高度: CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame]; CGRect rectNav = self.navigationController.navigationBar.frame; CGFloat maxY = rectSta...原创 2017-01-19 10:41:40 · 546 阅读 · 0 评论 -
xcode6和xcode5区别
一. 工程创建xcode 5 创建的工程有四个目录 如图 1: Framework 中存放有常用的框架xcode5 是不会自动导入框架的xcode 6 中有一个启动LunchScreen.xid (*xcode 7 是LunchScreen.storeboard*) APP 的可是界面是由启动界面决定的,如果没有启动界面默认为:320*480二. 配置文件.pch文件 xco原创 2016-05-16 22:02:03 · 307 阅读 · 0 评论