前言 假设: 程序员:mos 下班写了一个库 --- 可以完成一个加法操作 要卖出去,挣钱,源代码肯定不可以卖出去 这个时候,怎么能把这个东西卖给别人,别人又不知道他怎么写的 ---- 一、先创建....c 文件 ---- 二.在创建一个 .h 头文件 ---- 三.区分.h 和 .c 文件 ---- 四.右击项目名称,找到属性 ---- 五.属性页 – 常规 – 配置类型 – 选中 - 静态库...生成静态库 ---- 七.售卖 .lib 文件 买家就会说这是什么玩意,也用不了,这时我们可以把 . h 文件也卖掉 .h 里面只是有一些对函数的描述 拿到 .h 和 .lib 之后就可以用了...八.实际测试买走之后情形 8.1. test.c代码中没有函数声明,函数定义。...测试 这里面需要加入导入静态库的代码 #pragma comment(lib,)
前言 关于页面的性能优化,我们能做些什么?...虽然iOS 12系统之后,苹果对auto layout进行了优化,优化后的效率和手动布局差不太多。但是我们的用户还是会有很多在12系统以下的。 因此,还是可以考虑优化的。...不过我目前还没有遇到过使用auto layout造成页面性能出现问题的案例。 异步耗时操作 图片解码操作 图片为什么需要解码?...@{SDWebImageContextImageThumbnailPixelSize:@(size)} 复制代码 经过我的实验,效果还是很明显的。 网上找了6张大图。...使用起来麻烦 如果自己实现了一套获取图片的逻辑,会发现代码量增加很多,远远不如使用SDWebImage分类来的方便。
虽然iOS 12系统之后,苹果对auto layout进行了优化,优化后的效率和手动布局差不太多。但是我们的用户还是会有很多在12系统以下的。 因此,还是可以考虑优化的。...不过我目前还没有遇到过使用auto layout造成页面性能出现问题的案例。 异步耗时操作 图片解码操作 图片为什么需要解码?...解决图片问题 图片占有内存问题 从上图可以看到,图片占用内存的大小计算方式是: width * height * 每个像素占用的内存大小(一般是4字节) 一张图,如果分辨率比较大,就容易造成很大的内存问题 当页面上有多个图片的时候...使用起来麻烦 如果自己实现了一套获取图片的逻辑,会发现代码量增加很多,远远不如使用SDWebImage分类来的方便。...底层相关的面试文章(https://github.com/iOS-Mayday/heji) 简历指导和常见算法(hhttps://github.com/iOS-Mayday/iOS-Interview-Strategy
代码分离是 webpack 中最引人注目的特性之一。 你可以把你的代码分离到不同的 bundle 中,然后你就可以去按需加载这些文件。...总的来说, webpack 分离可以分为两类: 资源分离 代码分离 资源分离(Resource Splitting) 对第三方库(vendor) 和 CSS 进行代码分离,这些方式有助于实现缓存和并行加载...分离 CSS(CSS Splitting) 你可能也想将你的样式代码分离到单独的 bundle 中,以此使其独立于应用程序逻辑。...为了完成这个目标,不管应用程序代码如何变化,vendor 文件名中的 hash 部分必须保持不变。学习如何使用 CommonsChunkPlugin 分离 vendor/library 代码。...示例DEMO10: (DEMO / SOURCE) 代码按需分离(On Demand Code Splitting) 虽然前面几类资源分离,需要用户预先在配置中指定分离模块,但也可以在应用程序代码中创建动态分离模块
nginx(静态页面,图片分离) #vi /usr/local/nginx/conf/nginx.conf user nginx nginx; worker_processes 1; events {...$document_root$fastcgi_script_name; include fastcgi_params; } #配置Nginx动静分离...,定义的静态页面直接从zabbix发布目录读取(root /opt/nginx-1.4.7/html/resources;)。 ...这里 last 和 break 区别有点难以理解: last一般写在server和if中,而break一般使用在location中 last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程...~区分大小写的不匹配 -f和!-f用来判断是否存在文件 -d和!-d用来判断是否存在目录 -e和!-e用来判断是否存在文件或目录 -x和!
本文的所有代码均为swift1.2版本 通过通知传值 添加通知的观察者 NSNotificationCenter.defaultCenter().addObserverForName("userbookListNotification...postNotificationName("userbookListNotification", object: "我是发送的信息"); 注意: 必须先添加观察者才能接受发送的通知 所以只适合从子页面传值到父页面...---- 通过segue传值 新的方式,在storybord的A和B两个ViewController拖出一条segue,假如从A跳到B A传值到B 在A中添加以下代码 //通过segue传值...BController; println(b.ss); } B中的按钮拖一条线到BController的Exit上,选择returnToA ---- 通过文件传值NSUserDefaults和Sqllite
作为一名专业的 iOS 页面仔,画 UI 是我们的家常便饭,那不知道你在开发过程中有没有思考过这样一些问题: App 静止不动时,页面是否还进行刷新? 页面渲染和 RunLoop 之间是什么关系?...系列文章还有: iOS页面渲染-UIView & CALayer iOS页面渲染-离屏渲染 图形渲染框架 我们先来了解一下 UI 渲染的相关框架,不能对一些名词傻傻分不清。...同系列文章还有 iOS 页面渲染-离屏渲染 。 我们知道了 CALayer 成像的过程, 那么它是如何调用 GPU 并显示可视化内容的呢?...在 iOS 5 和之前的版本是 SpringBoard 进程(同时管理着 iOS 的主屏)。在 iOS 6 之后的版本中叫做BackBoard。...谈 UIKit 和 CoreAnimation 在 iOS 渲染中的角色(上) 谈 UIKit 和 CoreAnimation 在 iOS 渲染中的角色(下) 计算机那些事(8)——图形图像渲染原理[3
一、简述 在iOS开发过程中,页面跳转时在页面之间进行数据传递是很常见的事情,我们称这个过程为页面传值。...目前我所了解和掌握的传值方式有: 属性传值 单例传值 NSUserDefaults传值 代理传值 block传值 通知传值 KVO/KVC iOS----KVC和KVO 详解 二、页面传值的详解 2.0...准备工作 为了实现页面之间传值,我们需要准备两个页面,代码结构如下图所示。...其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值,而不需要调用明确的存取方法,这样就可以在运行时动态地访问和修改对象的属性。...这其实和属性传值比较类似。 适用场景:当从主页面push到子页面时,子页面需要使用到主页面的数据,我们需要使用到正向传值。
UICollectionView的时候都会都需要在Controller里面去实现DataSource & Delegate方法 单独Delegate方法还好不是很多, 但是再加上DataSource就很臃肿了, 为了避免代码臃肿也减少...ViewController的代码量 我们可以将DataSource方法分离出去, 大致方法如下: -> 创建需要的Model & 自定义Cell文件 -> 创建DataSource类, 导入 Cell
说到App环境分离在iOS的实现,我曾在iOS技术群里问过:如何实现在同一台手机能同时安装同个应用的测试和生产版本?应用名称要有区分,图标也要有所区别。...接下来,看如何一步步地实现环境分离。...每个Target,可以有不同的编译源文件和资源文件。那么,实现环境分离的方案,就是分别建立测试环境和生产环境的两个Target。...判别Target 那么,设置了不同Target后,代码上可能需要根据不同Target做不同处理,因此,需要在代码上能判断当前编译的是哪个Target。这可以通过预编译宏来区分。...然后,在代码中可以通过如下预编译指令判断当前是在哪个Target下: #ifdef BETA // 测试版需要执行的代码 #else // 默认生产版需要执行的代码 #endif 写在最后
写在前面 在之前的项目中好多处用到了tableView,然而之前不懂得将代理方法实现分离,所以每在一处用到tableView就要在controller中写一遍UITableViewDataSource和...UITableViewDelegate,实现tableView的基本功能中用到的tableViewDelegate的方法还算不太多,但是说到UITableViewDataSource,里面就那些固定的用法,每次都要写一遍,大大增加了代码的冗余度...,虽然不吝啬体力多写几行代码,但是给人感觉不太好,接下来就来说一下怎么样将tableViewDataSource这个磨人的小妖精从controller中分离出来。...创建一个基于NSObject的ArrayDataSource类 这个类就是我们将UITableViewDataSource分离出来所封装的类。...,这样不用每次使用tableView的时候我们都要重复写一遍dataSource代理了,同时也简化了代码结构。
概述 iOS页面跳转有人说是五种,其实上本质上可以分三种 一种是置换(常见的是app自动登录,根据用户是否退出,显示不同的第一个页面) 一种UINavigationController 进行push...rootViewController = navi; } UINavigationController控制 //push新页面 self.navigationController?....pushViewController(myViewController, animated: true) //关闭最上层页面 self.navigationController?....popViewControllerAnimated(true) 这种方式和用storyboard中的拖线选push是一样的原理 //先定义segue的ID self.performSegueWithIdentifier...形式同上 push和modal的区别 modal方式 就相当于一个一个桌子 push方式 就相当于摞盘子 所以push方式 打开的页面在原页面的上面,关闭的时候也只能从上往下关,不能关闭中间的一个 而modal
其实上面已经提到 CALayer 和 UIView 其实不属于同一个框架,CALayer 所属的 QuartzCore 框架是可以跨平台使用的,在 iOS 以及 macOS 中都可以使用,但是 UIKit...只在 iOS 中存在,在 macOS 中会有 Application Kit,在这两个系统里,页面绘图框架是可以公用的,但是两个系统的操作方式会有明显的差别,一个是通过触摸事件,另一个是通过鼠标和键盘...这是因为在 Mac OS 系统中,该属性对 CGImage 和 NSImage 类型的值都起作用,而在 iOS 系统中,该属性只对 CGImage 起作用。...顺便提一下,iOS 和 macOS 两个系统的参考坐标系不一致,对于 iOS 来说原点默认在视图的左上角位置,往右为 X 正方向,往下是 Y 正方向;而对于 macOS 来说原点默认是在视图的左下角位置...最后 说不引申,但是写起来篇幅还是挺多的,没办法,因为有些知识点是串在一起的,不展开的话可能不好理解的透彻,先说这么多吧,iOS 页面渲染这块还有很多东西,比如离屏渲染、渲染优化等,这些后面再单独说吧
经过前五篇系列文章,对Tangram和vlayout也有了初步认识,这篇文章开始将结合业务场景使用,探索框架能力能对业务带来的支持,因为调研本身是一个需要不断踩坑的过程,所以大纲也做了微调,后续会根据实际使用过程发现的问题和解决方案进行更新...需求背景 Tangram和vlayout介绍 Tangram的使用 vlayout原理 Tangram原理 json模板和数据分离 待定 本文将对Tangram的json模板和数据进行分离。...笔者Demo代码,内容见demo2包。...数据分离 前面的文章提到过,在实际业务中不太可能把数据绑定在模板里,这样模板会很臃肿,我们要做的是,用模板描述页面结构和数据源,而非数据本身,因此需要将数据剥离出来。 运行效果: ?...重点看页面结构即可,远程模板调整了Card顺序、4列布局改成5列、改了文本颜色和瀑布流item背景色。
验证用户名是否存在的示例代码引出该思想: ---- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding...XMLHttpRequest对象 // var xhr = getXMLHttpRequest(); // // 处理响应结果,创建回调函数,根据响应状态动态更新页面...xhr.status == 200) { // 说明服务器响应一切正常 // // alert(xhr.responseText); // 得到响应结果,得到页面上面的结果...XMLHttpRequest对象 var xhr = getXMLHttpRequest(); // 处理响应结果,创建回调函数,根据响应状态动态更新页面...即js代码与html代码分离。
⭐️ 更多前端技术和知识点,搜索订阅号 JS 菌 订阅 分离代码文件 在此之前,首先要知道经常配置的 output 中有关 filename 和 chunkFilename 的区别;简单来说在 entry...,加快二次访问的速度 代码分离的时候,optimization 中配置的 splitChunks 默认就是 async,默认对异步代码进行分离;所以通常情况下能用异步的用异步 import;配合 prefetching...css 文件进行分离的操作: js 代码分离 js 代码的分离操作,首先要考虑的就是对异步代码的分离。...css 部分分离代码文件 直接使用 extract-text-webpack-plugin 即可 一个 JS 文件,加载页面时虽然只需要加载一个 JS 文件,但代码一旦改变,用户访问新的页面时就需要重新加载一个新的...多个组件共用一部分样式,如果分离开来,第二个页面就有了 CSS 文件的缓存,访问速度自然会加快 MiniCssExtractPlugin 新版本的 webpack 使用这个插件 注意,在引入样式文件 import
本文旨在提供一种结构化组织构建 App 的简单方法,以便你可以在使用分离测试时能获得整洁而可扩展的代码。 本文提供了一些技巧和示例,你可以把它当作实际应用下的指南。 ...它可以是 a 和 b 或 red 和 green,这完全取决于为给定测试确定的值的命名。 ...在一次特定测试完成后 清理 测试代码,删除你在项目中为分离测试添加的视图,字体,图像和其他任何资源。 确保如果出现问题你可以控制并且可以 禁用 A/B 测试。 ...总结 分离测试(也称为 A/B 测试)对于我们的 App 来说是一个强大而有效的工具,但如果我们的代码设计不严谨的话,它很容易使你的代码变得一团糟。 ...在本文中,我们创建了一个可以管理分离测试逻辑的通用解决方案。同时还提供了一些真实的 App 示例和实用技巧,以便你可以在给你的 iOS App 进行分离测试的时候参考。
可以先下载Demo看看效果,Github地址: 可以预加载多个网址,然后在离线状态去显示那几个网址,看看是不是都完全缓存下来了...白名单实现原理 创建域名列表设置项 whiteListsHost 和 userAgent 设置项,在创建和更新时对其进行设置。在网络请求开始通过设置项进行过滤。...STMURLCacheModel 的单例来进行设置和更新配置项给 NSURLProtocol 的实现来使用。...具体完整的代码实现可以看 STMURLProtocol 里的代码实现。 后记 通过 map 网络请求可以缓存请求,也可以 mock 接口请求进行测试。...完整代码:
document.onreadystatechange = function() //当页面加载状态改变的时候执行function { if(document.readyState == "
领取专属 10元无门槛券
手把手带您无忧上云