1)在dart里如果想类内部的方法不被外部调用的话,可以在方法前面加个_就可以 2)在同一个文件里面_是可以访问的 3)dart里用this可以进行赋值,this.age就是...
1)在dart里如果想类内部的方法不被外部调用的话,可以在方法前面加个_就可以 2)在同一个文件里面_是可以访问的 3)dart里用this可以进行赋值,this.age就是...
flutter里的方法和箭头函数使用: 可选参数的定义:1)需要用{可选类型名字},引用的时候需要加b:3 2)加上?说明可以为空 3)可以选择设置默认值 4)[]里设置的是...
swift中的枚举可以用复杂的类型如下,关联值: 在Swift中进行枚举布局的时候一直是尝试使用最少的空间来存储enum,对于当前的case数量来说,UInt8能够表示256...
指针 为什么说指针不安全1)比如我们在创建一个对象的时候,是需要在堆分配内存空间的。但是这个内存空间的声明周期是有限的,也就意味着如果我们使用指针指向这块内容空间,如果当前内...
函数内联 函数内联是一种编译器技术优化,它通过使用方法的内容替换直接调用该方法,从而优化性能。1)将确保有时内联函数。它是默认行为,我们无需执行任何操作,Swift编译器可能...
异变方法 Swift中class和struct都能定义方法。但是有一点区别的是默认情况下,值类型属性不能被自身的实例方法修改。 下面代码运行时会报错的,这个是因为struct...
主要的不同点有 类有继承的特性,而结构体没有类型转换使您能够在运行时检查和解释实例的类型类有析构函数用来释放其分配的资源引用计数允许对一个类实例有多个引用 在类里面可以通过d...
swiftUI是声明式,可夸平台(macOs,tvOs,watchOS,iOS)。传统的UIKit是指令式。 UIKit和swifitUI可以互相通讯 。 为什么要推出swi...
首先我们创建一个定时器 然后会看到其的打印,说明runloop过来了 通过调用通知,其也会调用runloop,用bt指令堆栈可以看到。 通过上面说明runloop无时无刻不在...
KVC被用来进行赋值操作,下面是KVC的官方文档介绍: 下面这些代码是KVC进行赋值时候,其会找set方法,然后进行赋值操作, 如果没有set方法,其就会找_set方法,如下...
autoreleasepool前言 下面是我们自己创建了一个autoreleasepool,创建的对象有自动添加到自动释放池,和手动添加到释放池的。当我们自己创建了autor...
我们经常用的UIKit框架就是继承与CoreAnimation,CoreGraphics框架。这两个框架又依赖于OpenGL ES。CoreImage是处理图像之前的一些操作...
在iOS里有值类型和对象,值类型不需要我们内存管理。引用类型需要我们内存管理是为什么呢。因为值类型是放在栈里,受系统管理,栈是一块连续的内存空间,引用类型是放在堆里的。 内存...
架构优化:高内聚,低耦合 MVC MVP :面向协议式编程 MWWM: 双向绑定(model和view可以相互控制),可以使用ReactiveObjc里的RCAObserv...
CPU负责计算 -- > GPU负责渲染 --> frameBuffer -- > video Controller --> Monitor frameBuffer是存储帧缓...
APP启动分为pre-main和mian两个过程,首先我们需要进行如下图设置,设置DYLD_PRINT_STATISTICS为1,这样我们就可以打印出来APP在启动的时候所花...
总结:首先我们写了源代码,然后就会进行一个预编译,进行预编译就会进行一些宏定义的展开,头文件的展开。然后再进行编译,生成IR文件 ,然后生成.O文件,然后再进行链接(静态链接...
常见的几种block:堆block,栈block,全局block区分原则: 1.block没有使用外部的变量,或者只使用静态变量 或者全局变量----全局block 2....
自旋锁,互斥锁,读写锁自旋锁就是一个忙等状态 do--while互斥锁就是一个闲等,可以使得CPU进行休眠去做别的处理 下面是iOS中所用到的锁:执行10万次所用的时间 下...
首先我们来看下面一段代码,我们发现运行后这个会造成死锁奔溃,这个原因是因为主程序标注1里这些代码是放在main_queue里的,这个是串行队列,先进入先执行,然后标注2里添加...