swift-开发知识点
harkecho
这个作者很懒,什么都没留下…
展开
-
Swift中单例的正确写法
将各种单例都写一变,然后在运行时加入断点来观测。private let share = MHFInstance()class MHFInstance { class var shareStructInstance:MHFInstance { struct Instance { static var instance = MHFInstance() } return Instance.instance }原创 2020-06-05 15:10:06 · 1125 阅读 · 0 评论 -
Swift的懒加载与闭包
闭包闭包和OC中的Block非常相似,OC中的block类似于匿名函数,闭包是用来定义函数,他们的作用都是 保存一段代码,在需要的时候执行。// oc 中的blockvoid (^myblock)(int a,int b);myblock = ^(int a,int b){ // ...}// swift 闭包{(参数) -> 返回值类型 in 执行语句}{ (parameters) -> returnType原创 2020-06-05 14:40:46 · 311 阅读 · 0 评论 -
Swift中Int,Int8,Int16,Int32,Int64
Int /// On 32-bit platforms, `Int` is the same size as `Int32`, and /// on 64-bit platforms, `Int` is the same size as `Int64`. Int8 An 8-bit signed integer value type,占用1个字节 -127 128 Int16 A 16-bit signed integer value type,占用2个字...原创 2020-06-02 11:53:23 · 1440 阅读 · 0 评论 -
Swift值类型和引用类型
最近在swit的开发过程中,碰到了一个糗事,定义一个新的变量去接收我数据请求返回的model,而该model是用struct定义的,结果在对新的变量进行值的修改后,发现原来的model数据并没有修改,也就是说做了一次深拷贝操作。问题解决后,对于 Swift 中的 struct,class 以及 enum 在一般的使用中能够做到互相替换由于 Swift 中的 struct 为值类型,class 为引用类型,因此文中以这两种类型为代表来具体阐述stack & heap内存(RAM)中有两个区域,栈原创 2020-05-22 10:04:55 · 326 阅读 · 0 评论 -
UIButton传递参数
extension UIButton { private struct mhf_associatedKeys{ static var mhf_paramDic = "mhf_paramDic" } var mhf_paramDic: Dictionary<String, String> { get{ if let par = objc_getAssociatedObject(self, &mhf_a原创 2020-05-20 17:27:30 · 200 阅读 · 0 评论 -
Swift中AnyObject,Any,AnyClass
1.AnyObject 本身就是一个接口,而且所有的class都隐式的实现了这个接口,这也限制了AnyObject是只适用于Class类型的原因。AnyObject有什么用呢?有过Objective-C开发经验的人肯定知道id, 它可以表示任意类的实例, 编译器不会对向声明为 id 的变量进行类型检查.而 Swift为了与 Cocoa 架构进行协作开发,就将原来的id用 AnyObject 来进行替代。 2.Any既然AnyObject是只适用于Class类型&原创 2020-05-17 00:25:57 · 258 阅读 · 0 评论 -
iOS泛型
我们经常看到的OC中的泛型如OC泛型// 实例化一个元素类型为`NSString`的数组NSArray <NSString *> *array = [NSArray new];// 或者字典NSDictionary <NSString *, NSNumber *> *dict = @{@"manoboo": @1}// 或者- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent原创 2020-05-17 00:25:10 · 458 阅读 · 0 评论 -
swift associatedtype和typealias
typealias1、可以用来对已有的类型进行重命名,比如在表示两点之间的距离的时候,可以使用typealias将x和y轴的距离Double表示为Distance。 func distance(p1: CGPoint, p2: CGPoint) -> Double { let x = Double(p1.x - p2.x) let y = Double(p1.y - p2.y) return sqrt(x * x + y * y) }原创 2020-05-16 22:50:35 · 1192 阅读 · 1 评论 -
闭包
/** 可以把闭包想象成一个类的实例对象 内存在堆里 捕获的变量或常量就是u对象的成员(存储属性) 组成闭包的函数就是类内部定义的方法 闭包表达式: { (v1:Int,v2:Int) -> Int in return v1 + v2 } */typealias Fn = (Int) -> Intfunc getFn() -> Fn { ...原创 2020-02-19 19:57:44 · 149 阅读 · 0 评论 -
swift中寄存器相关内容
(%rdi)地址所在的存储空间movq -0x18(%rbp), %raxleaq -0x18(%rbp), %raxmovq是将rbp-0x18根据这个内存地址找到对应的内存空间,将内存空间的数据取出来赋给rax,所以rax里面放的是内存空间对应的内存数据leaq是 直接将rbp-0x18地址值赋值给rax,这个rax中放的是内存地址,((因为不支持movq %rbp-0x18, ...原创 2020-02-19 16:30:42 · 380 阅读 · 0 评论 -
swift中代码段数据段堆空间栈空间分布
原创 2020-02-19 16:29:13 · 229 阅读 · 0 评论 -
swift的结构体与类
结构体和类的本质区别结构体是值类型(枚举也是值类型),类是引用类型(指针类型)class Size {var width = 1var height = 2}struct Point {var x = 3var y = 4}func test() {var size = Size()var point = Point()}函数调用像size和point这两个变量它的...原创 2020-02-17 22:34:35 · 170 阅读 · 0 评论 -
xib设置UIScrollView
情形:在一个UIViewController自带的View中添加一个UIScrollView的控件,UIScrollView内部再添加一个可以滚动的View如上图所示ScrollView自带了Content Layout Guide和Frame Layout Guide如何使UIScrollView刚开始设置的时候只会设置scrollView距离它的superView的Constrain...原创 2020-02-08 10:01:07 · 1115 阅读 · 0 评论 -
swift等效OC方法makeObjectsPerformSelector
在OC我使用这段代码删除子视图:[self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];在swift中使用该方法self.view.subviews.forEach { subview in subview.removeFromSuperview()}或者view.subv...原创 2019-12-18 10:22:55 · 1020 阅读 · 1 评论 -
masory粗心造成的问题
遇到的问题有原创 2018-06-27 09:53:56 · 142 阅读 · 0 评论 -
UIView的layout方法
public struct CATransform3D { public var m11: CGFloat public var m12: CGFloat public var m13: CGFloat public var m14: CGFloat public var m21: CGFloat public var m22: CGF...原创 2018-07-02 12:05:04 · 213 阅读 · 0 评论 -
animateKeyframes 与 Animation
import UIKitclass ViewController: UIViewController { @IBOutlet weak var fj:UIImageView! @IBOutlet weak var yd1:UIImageView! @IBOutlet weak var yd2:UIImageView! @IBOutlet weak var yd3:U...转载 2018-07-02 16:26:20 · 800 阅读 · 0 评论 -
collection中cell选中状态下分享图片的快照snapshot
IconCollectionViewController.swift IconDetailViewController.swift IconCollectionViewCell.swift Icon.swift UIView+Snapshot.swift IconCollectionViewController.swiftimport UIKitprivate...原创 2018-07-09 17:11:23 · 265 阅读 · 0 评论 -
创建及进入新的storyboard
let storyboard = UIStoryboard(name: "Onboarding", bundle: nil) if let walkthroughViewController = storyboard.instantiateViewController(withIdentifier: "WalkthroughViewController") as? Walkth...原创 2018-07-03 09:19:18 · 640 阅读 · 0 评论 -
设定constraint后执行layoutIfNeeded()
通过设置constraint后,在这种情况下,你已经更新了约束值,但iOS 一直没有机会真正更新布局,调用layoutIfNeeded()方法,让这个view参与到布局中import UIKitclass IconListView: UIScrollView { var didSelectItemBlock:((_ index:Int) -> ())? let...转载 2018-07-03 11:10:42 · 558 阅读 · 0 评论 -
JSON与Swift4 Codable
JSON(JavaScript Object Notation)是一个以文字为主,轻量型,并且容易使用来存储以及交互资料的方式.原创 2018-06-27 09:52:13 · 384 阅读 · 0 评论 -
UISearchController
iOS11 遵循协议:UISearchResultsUpdating searchController = UISearchController(searchResultsController: nil) self.navigationItem.searchController = searchController searchController.searchResultsUp...原创 2018-06-20 10:56:50 · 185 阅读 · 0 评论 -
iOS10之后Core Data应用
3:Core Data的应用 托管物件内容(Managed Object Context) 托管物件模型(Managed Object Model) 持久性存储协调器(Persistent Store Coordinator) 持久性存储器(Persistent Store)iOS10之前的 iOS10之后导入了一个名为 NSPersistentContainer的新类别(存取...原创 2018-06-20 09:54:48 · 309 阅读 · 0 评论 -
代码NSLayoutConstraint
import UIKitclass NewRestaurantController: UITableViewController ,UITextFieldDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate{ @IBOutlet weak var photoImageView:UIImageVi...原创 2018-06-19 16:11:38 · 214 阅读 · 0 评论 -
RoundedTextField
自定义的圆角textFieldclass RoundedTextField: UITextField { let padding = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10) override func textRect(forBounds bounds: CGRect) -&gt; CGRect { ...原创 2018-06-19 15:12:25 · 153 阅读 · 0 评论 -
Segue绑定与解除例子
override func prepare(for segue:UIStoryboardSegue,sender:Any?){}ViewController中重写prepare(:,:)函数 storyboard中写segue的identifier 其中有转场动画有Cover Vertical(垂直覆盖),Cross Dissolve(交叉溶解),Flip Horizontal...原创 2018-06-19 13:50:20 · 497 阅读 · 0 评论 -
角度和弧度之间的关系
tableviewCell呈现动画 override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {// cell.alpha = 0// UIView.animate(withDurat...转载 2018-06-25 08:08:44 · 949 阅读 · 0 评论 -
修改tableViewCell中section的view背景颜色
直接传view会报错原创 2018-06-25 08:00:47 · 864 阅读 · 0 评论 -
系统字号与默认系统高度
通过下面代码测试了系统高度从14到18,高度分别如下: systemFont字体为13时候默认系统高度为15.5136 systemFont字体为14时候默认系统高度为16.7070 systemFont字体为15的时候默认系统高度17.9001 systemFont字体为16的时候默认系统高度19.094 systemFont字体为17的时候默认系统高度20.2871 systemF...原创 2018-06-02 07:48:20 · 416 阅读 · 0 评论 -
将当前图片缩放到指定宽度
import UIKitextension UIImage { /// 将当前图片缩放到指定宽度 /// /// - parameter width: 指定宽度 /// /// - returns: UIImage,如果本身比指定的宽度小,直接返回 func scaleImageToWidth(_ width: CGFloat) -> ...转载 2018-07-03 11:44:04 · 324 阅读 · 0 评论 -
修改UISearchBar背景颜色(内外框)
self.noteSearchResultVC = [[NoteSearchResultViewController alloc]init]; self.noteSearchResultVC.mainSearchController = self; self.noteSearchResultVC.noteSearchResultDelegate = self; ...转载 2018-07-03 15:13:43 · 2822 阅读 · 0 评论 -
AVAudioPlayer与AVAudioRecorder(录音及播放及定时器计时)
在iOS10上,如果没有使用者允许的话,不能存取麦克风,所以需要在Info.plist中添加NSMicrophoneUsageDescription的key,并告知你的使用者为何你的app需要麦克风import UIKitimport AVFoundationclass RecordProController: UIViewController { private var t...原创 2018-07-04 14:39:40 · 1635 阅读 · 0 评论 -
if,guard
你可以包含多个可选绑定或多个布尔条件在一个 if 语句中,只要使用逗号分开就行。只要有任意一个可选绑定的值为nil,或者任意一个布尔条件为false,则整个if条件判断为false,这时你就需要使用嵌套 if 条件语句来处理,如下所示:if let first = Int("6"), let second = Int("63"), first < second && ...原创 2018-04-25 09:29:17 · 186 阅读 · 0 评论 -
log执行次数
public static void testFirst() { while ((n = n / 2) > 0) { // /*那么打印执行了多少次,就是判断n/2的值是否大于0 执行了多少次 * 比如 n = 8 * 则 n/2 = 4, n = 4 * n/2 = 2, n = 2 * n/2 = 1, n = 1 ...原创 2019-06-24 14:30:11 · 393 阅读 · 0 评论 -
swift的枚举
// 枚举的基本用法 enum Direction { case north case south case east case west } enum DirectionOther { case north,south,east,west } fil...原创 2019-06-24 09:21:23 · 118 阅读 · 0 评论 -
swift中swiftNotice的pleaseWait()方法
调用方法: var isTrue:Bool = false override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { isTrue = !isTrue if isTrue { SwiftNoticeDemo.wa...原创 2019-06-06 10:13:27 · 397 阅读 · 0 评论 -
swift中index(where:)的用法
// index(where:)的用法 var myArray = ["我","你", "她", "我们", "你们", "他们"] if let index = myArray.index(where: { item -> Bool in return item == "我们" }){ ...原创 2019-06-06 09:54:46 · 1924 阅读 · 0 评论 -
Xcode10升级后,swift报错
解决办法:下载路径原创 2018-10-22 06:03:55 · 1092 阅读 · 0 评论 -
C语言中的指针概念
一般把数据都放在存储器中,存储器中一个字节称为一个内存单元 不同数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元,每个内存单元都有编号.这个编号也叫地址.就是我们所说的指针.内存单元的指针和内存单元的内容是两个不同的概念.对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容.在C语言中,允许用一个变量来存放指针,这种变量称为指针变量. 因此,一个指针变量...原创 2018-07-20 11:20:49 · 8612 阅读 · 1 评论 -
计算视频流量
码率也可以叫比特率,就是一种音乐每秒播放的数据量,单位用bit表示,也就是二进制位。 bps就是比特率。b就是比特(bit),s就是秒(second),p就是每(per),一个字节相当于8个二进制位。也就是说128bps的4分钟的歌曲的文件大小是这样计算的(128/8)*4*60=3840kB=3.8MB.流量:单位时间内收发的数据包的数量. 1M = 1024KB 流量 (M) = 观看...原创 2018-07-13 15:51:40 · 12372 阅读 · 0 评论