自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

但行好事,莫问前程;不忘初心,方得始终!

生活的每一天都是弥足珍贵的,要把每一天都过得有意义!

  • 博客(112)
  • 收藏
  • 关注

转载 自学iOS开发的一些经验

原文地址:自学iOS开发的一些经验 不知不觉作为 iOS 开发也有两年多的时间了,记得当初看到 OC 的语法时,愣是被吓了回去,隔了好久才重新耐下心去啃一啃。啃了一阵,觉得大概有了点概念,看到 Cocoa 那么多的 Class,又懵了,怎么才能调用系统的相机?怎么保存信息?怎么做一个像 Twitter 个人页那样的页面?总之就是不知道该从哪切入。现在...

2018-03-19 16:29:50 1894 1

原创 iOS底层原理系列06-RunLoop原理与应用实践

RunLoop是iOS开发中的核心机制,它不仅是线程管理的基础,也是实现高性能应用的关键。优化应用性能:合理安排任务在不同的RunLoop模式下执行,避免主线程阻塞。提高UI流畅度:理解UI渲染与RunLoop的关系,优化渲染流程。实现高级功能:利用RunLoop实现线程常驻、延迟加载、卡顿监控等功能。在实际开发中,我们应该根据具体需求选择合适的RunLoop应用策略,既不过度优化,也不忽视性能问题。只有透彻理解RunLoop的工作原理,才能在开发中游刃有余地应对各种复杂场景。

2025-03-15 13:19:23 1444

原创 iOS底层原理系列05-内存管理:从核心原理到高级优化

iOS 内存管理已经从最初的手动管理模式发展到如今的 ARC 自动管理机制,极大提高了开发效率并减少了内存相关错误。然而,高性能 iOS 应用仍然需要开发者深入理解内存管理机制,避免循环引用和内存泄漏,优化内存占用,并合理处理内存压力。通过合理使用自动释放池、弱引用、适当的缓存策略以及内存监控工具,你将能够在保持应用性能的同时,提供流畅的用户体验,避免因内存问题导致的崩溃和性能下降。。

2025-03-14 19:04:55 1062

原创 iOS底层原理系列04-并发编程

iOS提供了多种并发编程和线程安全的机制,从底层的pthread到高级的GCD和NSOperation。性能需求:对于性能要求极高的场景,考虑os_unfair_lock或dispatch_semaphore;对于一般场景,NSLock和串行队列足够。编程范式:如果偏好面向对象的API,选择NSOperation和NSLock系列;如果偏好函数式编程,选择GCD。任务特性:如果需要复杂的任务依赖和取消机制,选择NSOperation;如果是简单的并发任务,GCD更简洁。同步需求。

2025-03-14 18:15:26 938

原创 iOS底层原理系列03-Objective-C运行时机制

存在形式:分类由category_t结构体表示,而扩展没有单独的结构体。加载时机:分类在运行时动态加载,扩展在编译期就与原类合并。实例变量:分类不能添加实例变量,扩展可以添加实例变量。方法覆盖:分类可以覆盖原类方法,多个分类之间按编译顺序覆盖;扩展的方法和原类方法等价,不存在覆盖关系。源码要求:分类可以为任何类添加功能,扩展只能为有源码的类添加功能。

2025-03-13 01:21:11 1000

原创 iOS底层原理系列02-深入了解Objective-C

对于自定义类,其内存结构会更复杂,包含从父类继承的变量和自己声明的变量。int _age;@end包含从NSObject继承的isa指针(8字节)包含一个int类型变量_age(4字节)包含一个double类型变量_height(8字节)包含一个NSString*类型的_name指针(由于@property自动合成,8字节)理论上总大小为:8 + 4 + 8 + 8 = 28字节。但实际分配会考虑内存对齐,可能会是32字节。特性+load调用时机程序启动加载类和分类时。

2025-03-13 00:28:35 2583 1

原创 iOS底层原理系列01-iOS系统架构概览-从硬件到应用层

iOS系统架构是一个精心设计的分层体系,从底层Darwin到用户交互的Cocoa Touch层,每一层都有其明确的职责和功能。系统启动过程涉及多个阶段,从安全启动链到应用初始化,确保了系统的安全性和高效运行。iOS的进程和线程管理机制则提供了强大的并发处理能力,通过严格的资源管理和先进的调度算法,在保证用户体验的同时优化设备能耗。

2025-03-12 22:00:32 1102

原创 TypeScript系列07-类型声明文件

是最大的TypeScript类型定义仓库,为数千个JavaScript库提供类型支持。@types是通过npm分发这些类型定义的命名空间。使用@types包# 安装React和React Native的类型定义 npm install --save-dev @types/react @types/react-native安装后,TypeScript会自动识别并使用这些类型定义,无需额外配置。查找已有类型定义先检查库本身是否有内置类型定义(查看package.json中的types或typings字段)

2025-03-10 16:27:36 916

原创 TypeScript系列06-模块系统与命名空间

/ 模块接口定义// 实现动态加载系统if (!${// 模块接口定义 // types/modules.d.ts declare module 'app/modules' {} } // 实现动态加载系统 // src/moduleLoader.ts import type {if(!} const {使用索引访问类型增强类型安全通过映射类型创建模块类型库结合条件类型实现灵活的模块加载接口。

2025-03-09 18:42:27 610

原创 JavaScript系列07-事件委托:深入剖析与实践技术

事件委托是前端开发中的核心技术模式,掌握这一技术能显著提升应用性能和代码质量。通过减少事件监听器数量、简化动态内容管理、优化内存使用,事件委托为构建高性能、可扩展的前端应用提供了坚实基础。

2025-03-09 17:59:12 652

原创 JavaScript系列06-深入理解 JavaScript 事件系统:从原生事件到 React 合成事件

除了浏览器提供的原生事件外,JavaScript 还允许我们创建和触发自定义事件,这对于组件间通信非常有用。使用 Event 构造函数// 监听事件console.log('构建事件被触发');});// 触发事件使用 CustomEvent 构造函数(可以传递自定义数据):detail: {});// 监听事件console.log('用户登录:', e.detail.username);console.log('登录时间:', e.detail.loginTime);});

2025-03-08 21:34:01 1288 2

原创 TypeScript系列05-函数式编程与 TypeScript:打造类型安全的函数式架构

/ 返回函数的函数// 使用高阶函数// 柯里化函数类型高阶函数的类型定义需要关注返回函数的类型安全,确保类型信息在函数传递过程中不会丢失。// lodash/fp 与 TypeScript// 类型分析initial: R// ramda 类型示例// 类型: number[]这些库的类型定义通常采用高度泛型化的方式,确保灵活性与类型安全的平衡。// 自定义Maybe MonadmapUflatMapUmapUflatMapU。

2025-03-08 20:41:58 691

原创 Swift系列02-Swift 数据类型系统与内存模型

Swift 的类型系统和内存模型设计在安全性和性能之间取得了平衡。通过深入了解值类型和引用类型的内存行为,以及结构体和类的性能特性,我们可以做出更好的设计决策。通过合理利用 Swift 的类型系统和内存模型,可以在维持代码清晰度的同时,提升应用程序的性能和内存效率。记住,过早优化往往是万恶之源 — 优先设计出清晰直观的代码,然后通过性能分析和测量来确定需要优化的热点区域。

2025-03-06 13:56:00 913

原创 Swift系列01-Swift语言基本原理与设计哲学

Swift是一门兼具现代特性和高性能的编程语言。通过本文介绍的基本原理和设计哲学,你应该对Swift有了更深入的了解。Swift的类型安全、内存管理模型和编译优化是其核心优势,掌握这些概念将帮助你成为更高效的Swift开发者。随着Swift语言的不断发展,它将继续引领iOS和macOS开发的未来。通过持续学习和实践,你可以充分利用Swift的强大功能构建高性能、安全的应用程序。

2025-03-06 13:40:07 950

原创 TypeScript系列04-泛型编程

泛型是TypeScript最强大的特性之一,掌握泛型可以帮助我们写出更灵活、更可重用、更类型安全的代码。随着TypeScript的不断发展,泛型的应用将变得越来越广泛和重要。通过深入理解泛型,我们可以充分利用TypeScript的类型系统,提高代码质量和开发效率。

2025-03-05 22:32:10 1010

原创 React Native v0.78 更新

这个版本在 React Native 中引入了 **React 19**,并带来了一些重要的新功能,例如 **Android 矢量图(Vector Drawables)的原生支持** 以及 **iOS 更好的 Brownfield 集成**。

2025-03-05 19:51:27 1114

原创 TypeScript系列03-类与面向对象编程

面向对象编程(OOP)是 TypeScript 的核心特性之一,它使得代码组织更加结构化且可维护。本文将深入探讨 TypeScript 中类的各个方面,从基础概念到高级应用,帮助你全面理解并有效运用面向对象的设计思想。

2025-03-04 17:38:53 1047

原创 TypeScript系列02-高级类型系统:接口与类型别名深度剖析

TypeScript 的类型系统是其核心优势之一,而接口(Interface)和类型别名(Type Alias)构成了这一系统的基石。本文将深入剖析这些高级类型构造,探讨它们的设计原理、应用场景及实战模式。

2025-03-04 17:02:50 709

原创 TypeScript系列01-类型系统全解析

TypeScript 是 JavaScript 的超集,由 Microsoft 于 2012 年发布,设计目标是增强 JavaScript 的开发体验和代码质量。TypeScript 代码最终会被编译(转译)为原生 JavaScript,因此它可以在任何支持 JavaScript 的环境中运行。// TypeScript = JavaScript + 静态类型系统 + 额外语言特性TypeScript 类型系统强大而灵活,它不仅能捕获常见错误,还能作为代码文档,提升开发效率和代码质量。

2025-03-03 20:02:56 192

原创 JavaScript系列05-现代JavaScript新特性

现代 JavaScript 的新特性,包括 ES6 及后续版本的关键特性,如箭头函数、let/const 等;解构赋值与扩展运算符;模块化开发,如 ES 模块语法等;Proxy 与 Reflect;新的 API 与语法糖,如数组、对象、字符串等新方法;兼容性与 Polyfill 处理方式等。总结指出这些新特性提升了开发效率、改善了代码质量、提高了可维护性

2025-03-03 19:21:18 1082

原创 JavaScript系列04-面向对象编程

本文主要包括以下内容:1. 原型与原型链 - 解释JavaScript基于原型的继承机制2. 继承实现方式 - 介绍各种实现继承的方法3. ES6 class语法 - 介绍ES6引入的类语法4. 对象属性描述符 - 解释属性描述符的概念和用法5. 设计模式在JavaScript中的应用6. 面向对象vs函数式编程

2025-03-02 17:53:06 921

原创 JavaScript系列03-异步编程全解析

1. 回调函数与回调地狱2. Promise详解3. async/await语法4. Generator函数5. 事件循环机制6. 异步编程最佳实践

2025-03-02 00:02:17 759

原创 JavaScript系列02-函数深入理解

JavaScript函数是语言中极其强大的特性,理解函数的声明、表达式方式、箭头函数的特性、this的绑定机制以及call/apply/bind的应用是成为JavaScript高手的必经之路。高阶函数和柯里化等函数式编程技术允许我们以更简洁、更优雅的方式编写代码。函数式编程思想通过强调纯函数、不可变数据和函数组合,帮助我们编写更易维护、更健壮的应用程序。深入理解这些概念,不仅能让我们写出更高质量的代码,也能更好地理解现代前端框架和库的设计原理。

2025-03-01 20:10:25 725

原创 JavaScript系列01-核心基础:变量、类型与作用域

JavaScript的发展历程,从简单脚本语言到现代web开发的支柱三种变量声明方式(var、let、const)及其区别JavaScript的数据类型体系和类型转换机制作用域概念和闭包原理变量提升和暂时性死区的概念通过实践案例展示了这些概念的应用掌握这些基础知识对于理解JavaScript的行为和编写高质量的JavaScript代码至关重要。深入理解这些概念,将为学习更高级的JavaScript技术和框架打下坚实基础。

2025-03-01 17:55:37 837

转载 Mac系统实现git命令自动补全

当我第一次使用mac电脑的时候,由于我是从事软件开发的程序员,所以必须经常要使用到git,然而发现在mac系统下,git不能实现命令的自动补全,然后网上查找资料,找到了解决办法,终于可以实现了git命令的自动补全功能,现在分享如下。安装Homebrew首先安装配置Homebrew(注:如果已经安装过就跳过):      HomeBrew的网址:https://brew.sh/index_zh...

2018-05-17 15:53:18 953

转载 iOS-在现有项目中添加React Native(手动RNDemo)

http://blog.youkuaiyun.com/wintelsui/article/details/59525889首先我们前提是已经安装了React Native所需要的工具,Node.js 等。项目1.首先我们有这样一个项目:RNDemo ,并使用目录级RNTestDemo/RNDemo/RNDemo.xcodepro...

2018-05-15 07:55:47 433

转载 iOS沙盒文件不做备份处理

 IOS5多了一个比较重要的功能iCloud,但是同时也出现一个问题,很多的APP都把很大量的数据存在APP底下的Documents(/Documents )文件夹里面,这样苹果会reject掉你的APP的,除非你不再更新就一直把APP摆在APPStore,显然这样是不可行的,因为你这些文件会同步到iCl...

2018-05-05 12:13:53 819

原创 3D Touch 介绍二

上一篇文章写了3D Touch的两个应用场景,Home Screen Quick Action以及Peek & Pop,那么第三个应用呢,是关于UITouch下的压力属性force的使用,我在code4App上看到AFBrushBoard的代码,这是一个根据手指滑动速度,调整笔画宽度...

2018-04-17 14:12:20 253

原创 3DTouch介绍(一)

*关于3D Touch,目前能用的就是三处, 1、Home Screen Quick Actions, 就是 应用图标压力感应,弹出的菜单,这个是简单的应用场景,下面稍作介绍; 2、UIKit peek and pop & Web view peek and pop, 指的是在App内部,压力感应的预览功能,这两个我归为一类,是因为...

2018-04-17 14:09:41 976

转载 Git游戏通关

最近在玩这个叫githug得git练习游戏,相当于我们熟知的‘金山打字通’,目前有55个关卡,想系统熟悉git命令的小伙伴,赶快搞起吧~ ~ ~ ~下面是我最新的通过攻略,还在更新中:进到安装完githug的目录,是一个叫git_hug的文件夹,游戏就从这里开始哦~~~游戏命令:         ...

2018-04-14 20:57:16 2874

转载 REST API详解

原文地址 http://blog.youkuaiyun.com/hello_hwc/article/details/44150793一 REST的概念REST(Representational State Transfer)含状态传输是一种软件架构风格。 要点 资源由URI(...

2018-03-14 11:10:40 7367

转载 深入理解iOS APP启动过程

前言 启动时间是衡量应用品质的重要指标。本文首先会从原理上出发,讲解iOS系统是如何启动App的,然后从main函数之前和main函数之后两个角度去分析如何优化启动时间。准备知识Mach-O哪些名词指的是Mach-oExecutable 可执行文件Dyl...

2018-03-14 10:06:30 400

转载 iOS开发:MKMapView地图内存持续增加的释放解决办法

内存持续增加的释放解决办法最近修改一个用到MKMapView的项目,内存一直占用过多,每次拖拽地图时还会增加占用,且一直无法释放。经过两天的排查,最后锁定是创建的self.map对象在加载地图的时候,不断申请内存,但在View的生命期内不会释放。查阅资料了解到removeFromSuperview可以释放内存,但remove的话地图会从父View上消失。最后解决办法是在- (void)ma...

2018-03-01 15:55:35 2556

转载 iOS 开发:用 Instruments 来检验你的app

编者注:或许很多人对 Instruments 应用不太了解,但可能很多老的 iOS 开发者都应该用过 Instruments 工具来检测iOS应用内存泄漏情况。特别是在iOS 5.0之前,即苹果在iOS平台上面还没支持ARC的时候,写iOS应用就类似C语言那样,容易忘记释放内存,而内存对移动设备而言是非常可贵的。入门为了节省大家的时间,提供一个演示的Demo给大家.代码传送门.下载后...

2018-03-01 14:56:18 1438

转载 iOS统一和分开管理状态栏的颜色

工作中会经常遇到需要修改状态栏显示的颜色,实践发现,修改其实很简单,只需要在项目的infoPlist文件中添加一项:View controller-based status bar appearance,添加后,它的默认值就是NO,表示由系统管理状态栏,此时在AppDelegate中添加如下代码:[UIApplicationsharedApplication].statusBarStyle =U

2018-01-19 10:18:48 743

转载 Xcode_真机调试报错dyld: Library not loaded: @rpath/xxxxx.dylib

Xcode证书失效或者废除后重新创建开发证书,配置好证书后,运行程序,进入启动页面后奔溃,控制台打印报错:dyld: Library not loaded: @rpath/libswiftCore.dylib  Referenced from:/var/containers/Bundle/Application/EB57B22E-6B26-4152-9A5F-8AEFB1586B6E/YiP

2018-01-19 10:15:15 1218

转载 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)

App Store 自2016年6月1日开始实施全新策略,所有提交至苹果 App Store 的 iOS 应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议:IPv6-only 标准。一、IPv4与IPv6介绍1,二者的区别(1)IPv4 是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,目前运用最多的互联网技术协议。IPv4 地址格式是这

2018-01-18 15:00:49 7868

转载 ios开发static关键字的理解

1:static关键字修饰局部变量:1:当static关键字修饰局部变量时,该局部变量只会初始化一次,在系统中只有一份内存   2:static关键字不可以改变局部变量的作用域,但是可延长局部变量的生命周期,该变量直到整个项目结束的时候才会被销毁2:static修饰的全局变量:作用域仅限于当前文件,外部类不可以访问到该变量3:extern:引用关键字,当某一个全局变量,没有用static修饰时

2018-01-12 10:52:23 272

转载 iOS中的URL Scheme

在iOS的SDK中提供了一个非常有意思的功能,它能将iOS的Application同自定义的URL Schema绑定,同时可以通过URL Scheme在浏览器或者是其他应用中启动这个Application。本文主要介绍如何通过URL Scheme的方式启动应用和参数的传递。##创建URL Scheme1、首先在*-Info.plist中添加一行,选择URL types,效果如下图所示:

2018-01-08 18:14:50 728

转载 FMDB数据库升级增加表字段

升级数据库是件挺麻烦的事,并且自己又是一个对数据库没啥概念的菜鸟。废话不多说,上代码。感谢各位热心分享的网友。要在一张已经存在的表里面新增一个或者多个字段,思路应该是这样的:判断要增加的字段存不存在,不存在就插入。这里用到FMDB的几个api:1、判读字段是否存在[objc] view plain copy print?if (![db columnExists:@”需要增加的字段” in

2017-12-06 19:47:18 449

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除