-
7、闭包表达式(二)
目录 函数汇编分析 闭包汇编分析 闭包分析 数组相关 自动闭包 测试函数汇编分析/// 一、函数汇编分析func functionAnalyInAssembly() { // 0x100007570 func sum (_ v1:Int,_ v2:Int)->Int{ v1+v2//0x100006d20 0x100006d72 } var fn = sum print(MemoryLayout.size(ofVa...…
-
6、闭包表达式(一)
目录 闭包表达式 闭包表达式在数组中应用 闭包闭包表达式/// 一、闭包表达式func closureExpression(){ /* 在Swift中,可以通过func定义一个函数,也可以通过闭包表达式定义一个函数 */ //1、函数作为参数 do{ func execute (_ x:Int,_ y:Int,fn:(Int,Int)->Int){ print(fn(x,y)) ...…
-
5_2、结构体和类(二)
目录 值类型、引用类型的let 结构体、类、枚举内部都可以定义方法 嵌套类型分析 内存段分析值类型、引用类型的letfunc letAnaly() { //1、let 分析(修饰值类型) struct Point{ var x:Int var y:Int } let p = Point(x:10,y:20) print(MemoryLayout.size(ofValue: p)) //常量p 内存内存储的是值类...…
-
5_1、结构体和类(一)
目录 结构体 类 结构体和类的本质区别结构体在 Swift 标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分 比如Bool、Int、Double、 String、Array、Dictionary等常见类型都是结构体 struct Date { var year: Int var month: Int var day: Int } var date = Date(year: 2019, month: 6, day: 23)所有的结...…
-
4、枚举汇编分析
目录 查看int类型的内存分布 查看枚举类型的内存分布(原始值的内存分布) 查看枚举类型的内存分布(关联值的内存分布) 特殊情况 switch汇编分析查看int类型的内存分布func memoryAnalyForInt() { //查看变量地址 //view Memory of " " //Debug - Debug WorkFlow - View Memory var age:Int = 10 print(MemoryLayout.size...…
-
3_2、可选项
目录 可选项 强制解包 可选项绑定 空合并运算符 guard语句 隐式解包 字符串插值 多重可选项可选项可选项,一般也叫可选类型,它允许将值设置为nil 在类型名称后面加个问号 ? 来定义一个可选项func optionalUse() -> Void { //1、设置nil //直接设置 nil会报错 //var name:String = nil //name可存储两种类型 String和nil var name:String? ...…
-
3_1、枚举
目录 枚举的基本用法 枚举关联值 枚举原始值 递归枚举 memorylayout的使用枚举的基本用法1、定义方式1enum Direction{ case north case south case east case west}var dir = Direction.westdir = Direction.eastdir = .northprint(dir)2、定义方式2enum Direction2{ case north,south,east,...…
-
2_2、函数
目录 函数的定义 函数的参数 print函数的使用 输入输出参数 函数重载 内联函数 函数类型 typealias 嵌套函数函数的定义1、函数的定义//形参默认是let 也只能是letfunc sum(num1: Int,num2: Int) -> Int{ return num1 + num2 //num1 + num2 //隐式返回}//调用时 num1 与 num2 必须得写print(sum(num1:10,num2:20))2、无返回值func...…
-
2_1、流控制
目录 if else while循环 for循环 swich where 标签语句if elsefunc ifElseExpression() -> Void { /** if 后面的条件可以省略小括号 条件后面的大括号不可以省略 if后面的条件只能是Bool类型 */ //1、小括号可以省略、大括号不可以省略 do{ let age = 18 if age<18 { ...…
-
1、基础语法
目录 常量 常见数据类型 类型转换 元祖分析常量常量只能赋值一次它的值不要求在编译时期确定,但在使用之前必须赋值1次一、只能赋值1次 下面两种方法都可以//方法一:let age1 = 10//方法二:let age2:Intage2 = 10//会报错 Cannot assign to value: 'age1' is a 'let' constant//age2 = 20 二、在使用之前必须赋值一次let age2:Int//不赋值使用会报错 Constant 'age2' u...…
-
调试流程⭐️
目录 调试的核心角色 调试流程 常见调试命令(LLDB)调试的核心角色一、在 iOS 调试中,主要涉及以下关键组件:Xcode 提供 IDE 和调试界面(断点、变量窗口、控制台)。 负责编译、打包、符号文件管理、与设备通信。LLDB(Low Level Debugger) Apple 默认调试器(替代 GDB)。 命令解析、符号解析(用 dSYM)、断点管理、格式化输出(变量、对象)、提供给 Xcode UI。debugServer(运行在设备上) iOS 设备上的代...…
-
启动图不更新问题
参考文章:完美解决LaunchScreen.storyboard启动图更新失效问题 参考文章:iOS解决LaunchScreen图片显示问题:白屏、黑屏、不显示、显示旧的图片等等问题目录 启动图更新后不生效启动图更新后没有生效,还是显示的老的启动图片。 删除APP,clean工程都不生效。解决办法xcode有缓存,新替换的启动图片不要放在asset内,放在工程的目录下,并且更改一个新名字重要更新: 在使用LaunchScrenn.storyboard时,启动图片在大小或...…
-
内存泄露的检测
目录 内存泄露 Leaks的使用内存泄露一、Leaked Memory: 未被程序引用,但也无法释放的内存。1、在MRC下比较常见,在ARC下由于有自动引用计数,在编译时会自动添加release,所以比较少见。 2、但在ARC机制下,使用CF或CG对象时,忘记手动调用CFRelease或CGRelease会出现。 3、手动开辟了堆空间,而没有手动释放也会出现。二、Abandoned Memory: 被程序引用,无用但也无法释放的内存。主要是循环引用 1、bloc...…
-
App间的相互跳转
目录 一、配置 二、说明一、配置要通过 URL Scheme 实现从 App A 跳转到 App B,然后从 App B 返回到 App A,你可以按照以下步骤进行:一、配置 App B 的 URL Scheme首先,App B 需要支持 URL Scheme,以便 App A 能够调用它。1、在 App B 中配置 URL Scheme 在 App B 的 Info.plist 文件中,注册一个唯一的 URL Scheme。例如,将 Scheme 命名为 appb。打开 Ap...…
-
Other Linker Flags
目录 一、other linker flags 二、-Objc/-all_load/-force_load 三、补充一、other linker flagsOther Linker Flags 是 Xcode 中的一个编译选项,用于在编译项目时向链接器(linker)传递额外的命令行参数。链接器的作用是将编译生成的目标文件(object files)和依赖的库文件链接在一起,生成最终的可执行文件或库文件。一、Other Linker Flags 的用途1、指定库文件: 用来链接额外...…
-
配置及编译项介绍
目录 Build Phases Build SettingsBuild Phases一、Target Dependencies用于指定当前目标(Target)所依赖的其他目标(Targets)自动处理依赖关系:Xcode 会在构建当前目标之前,优先构建它所依赖的目标。target我们自己的代码如果它是被依赖的,构建时优先构建它。二、Link Binary With Libraries将系统库和三方库链接到应用程序中,使用这些库提供的功能。系统库和三方库:我们拿到的是二进制文件没有源码B...…
-
OC是动态语言
目录 语言的动态特性 语言的静态特性Objective-C是一种动态语言,但它也具有静态语言的一些特性。 以下是对Objective-C动态性和静态性的详细解释:语言的动态特性动态类型检查变量的类型可以在运行时检查和改变。比如 id 类型id dynamicObject = [SomeClass new];if ([dynamicObject isKindOfClass:[SomeOtherClass class]]) { // Do something with dynamic...…
-
配置Beta环境
1、创建两个config文件,内容拷贝 Enterprise的文件内容,并做相应修改2、在 PROJECT -> Df2-ios下面配置增加Beta并配置config文件增加一个Beta环境(通过复制Enterprise)3、在TARGET -> df2-ios -> Build Setting 下面配置环境变量4、在TARGET -> df2-ios -> Build Setting 下面配置显示的app的名字注意配置的优先级,1的优先级是高于2的优先级的(...…
-
使用第三方字体
参考文章:iOS开发第三方字体使用目录 介绍介绍一、将字体文件添加到项目中: 将你的字体文件(通常是 .ttf 或 .otf 格式)添加到 Xcode 项目中。确保在项目设置中将这些文件包含在目标中。 在target - Build Phases - Copy Bundle Resources 中是否包含了字体文件二、更新 Info.plist 文件: 在 Info.plist 文件中添加字体文件的条目。 在 “Fonts provided by applicat...…
-
UniversalLinks
参考文章:iOS Universal Link使用总结 参考文章:iOS配置Universal Links目录 介绍 如何配置 原理分析 微信SDK集成 如何通过UniversalLinks打开app介绍Universal Link是Apple在WWDC上提出的iOS9的新特性之一; 能够方便的通过打开一个HTTPS链接来直接启动您的客户端应用,当然前提条件是您必须在手机上安装了此App;应用场景: 1、从浏览器启动你的app 2、从其他App的WebVie...…