- 博客(118)
- 资源 (14)
- 收藏
- 关注
转载 函数式编程
作为iOS开发者,常用Masnory/SnapKitMasonry是常用的自动布局的第三方框架 Snapkit是Masonry团队打造的swift版本的自动布局框架一个典型的Masonry的语句make.centerY.equalTo(self).offset(100);就是这个”.”让Masonry更加鲜活的展示给了开发者。这就是链式编程。链式编程概要如果想...
2018-05-29 09:37:09
298
原创 面向切面编程
切面可以简单地理解为嵌入不同函数中的功能相同的操作(打印调试信息等),每类功能相同的操作可以抽取出一个切面。 OOP:面向对象编程,针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 AOP:面向切面编程,针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。 AOP是处理某个步骤和阶段的,从...
2018-05-28 17:43:19
476
原创 swift基础语法练习
import UIKitvar str = "Hello, playground"var num = 5num += 5class person { var name = "zhangshanshan" var address = "上海市浦东新区" var age = 5 func updateInfo(age : Int
2018-05-28 15:47:30
932
1
原创 UIViewController生命周期
UIWindow如果相当于画框的话,UIViewController相当于是一个画布。1.创建一个类继承于UIViewController2.loadView方法当访问UIViewController的view属性时,view如果此时是nil,那么VC会自动调用loadView方法来初始化一个UIView并赋值给view属性。此方法用在初始化关键view,需要注意的是,在view初始化之前,不能先调
2018-02-06 17:17:36
2096
转载 重写、覆盖、重载、多态
override->重写(=覆盖)、overload->重载、polymorphism -> 多态【重写】override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则: 1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2、重写方法的访问修饰符一定要大于被重写方法的
2018-02-06 16:49:20
241
转载 常见的语言编码
常见的语言编码有:GB2312:简体中文编码,一个汉字占用2字节,在大陆是主要编码方式。BIG5:繁体中文编码。主要在台湾地区采用。GBK:支持简体及繁体中文,但对他国非拉丁字母语言还是有问题。UTF-8:Unicode编码的一种。Unicode用一些基本的保留字符制定了三套编码方式,它们分别UTF-8,UTF-16和UTF-32。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个
2018-02-06 14:54:57
4273
转载 iOS程序优化相关
1.tableview的优化优化:1.1 正确的复用cell。1.2 减少在返回每个cell里面的处理逻辑和处理时间。尽量将数据进行缓存和复用。1.3,尽量减少处理加载和计算的时间,不阻塞UI线程。1.4,尽量使用绘制每个cell。1.5,设置每个cell的opaque属性。1.6,尽量返回每行固定的height。1.7,在每个cell减少图形效果。1.8,分段加载数据。2.应用程序性能的调优1.用
2018-02-06 14:42:30
198
转载 面试题系列(七)--基础知识
1.事件响应(responder chain)只有继承了UIResponder的类才能响应touch事件,先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而下传递事件。直到单例UIWindow对象,最后是单例UIApplication对象以终止,UIApplication的下一个响应者是nil,已结束整个响应循环。事件在传递过程
2018-02-06 14:36:08
234
原创 渐变色
给视图添加渐变色,示例如下:rect.origin.y = CGRectGetMaxY(headView.frame); rect.size.height = 50; UIView *titleView = [[UIView alloc] initWithFrame:rect]; CAGradientLayer *gradient = [CAGradientLayer lay
2018-01-26 15:36:46
374
转载 UIColor,CGColor,CIColor三者的区别和联系
一、UIColor UIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化。UIColor包含了一些类方法用于创建一些最常见的颜色,如白色,黑色,红色,透明色等,这些颜色的色彩空间也不尽相同(白色和黑色是kCGColorSpaceDeviceGray,红色的色彩空间是kCGColorSpaceDeviceRGB)
2018-01-19 15:41:38
1760
原创 面试题系列(六)-基础知识
1.多线程、特别是NSOperation和 GCD的内部原理。2.运行时机制的原理和运用场景。3.SDWebImage的原理。实现机制。4.如何解决TableView卡的问题。tableView 滑动卡的问题主要是因为:从缓存中或者是从本地读取图片给UIImage的时候耗费的时间。需要把下面的两句话放到子线程里面: NSData *imgData = [NSData dataWithContents
2018-01-18 10:39:00
205
转载 SWift入口分析
1.swift为什么不需要main在c/c++及其它语言中都有一个main函数,程序从main作为起点,开始执行程序,如下:int main(int argc, const char * argv[]) {printf("Hello, World!\n");return 0;}main函数实际上是一个特殊的函数,为了能找到程序入口,大多楼语言都约定main()函数作为入口。那么
2018-01-17 15:56:59
1726
转载 fallthrough的用法注意总结
在swift的switch中,case后面加了fallthrough的用法,就和OC的case后面没加break的用法是一样的!使用fallthrough需要注意的有:1.加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行var age = 10switch age {case 0...10: print("小朋友")
2018-01-17 15:42:43
21755
1
转载 SWift基本语法(二)
一 可选类型知识点补充例一 :强转并且制定类型let str01 = "23" //打印结果: "23"let age : Int? = Int(str01) //打印结果 :23问题 : 该例子转化的结果为什么需要用可选类型来接收?解答 : 因为很有可能是转化不成功的,如果此时不用可选类型来接收的话,万一转化失败,那么该值就为空(nil),如果不选择可选类型来接收,程序会崩溃.例二 : 获取
2018-01-17 15:33:22
356
原创 swift基本语法(一)
import UIKitvar str = "Hello, playground"var num = 5num += 5class person {var name = "zhangshanshan"var address = "上海市浦东新区"var age = 5 func updateInfo(age : Int , address : String) {
2018-01-16 17:59:45
525
转载 面试题系列(五)-网络协议
1.UDP/TCP的区别UDP 是用户数据报协议: 主要用在实时性要求高以及对质量相对较弱的地方,但面对现在高质量的线路不是容易丢包除非是一些拥塞条件下, 如流媒体 TCP 是传输控制协议:是面连接的,那么运行环境必然要求其可靠性不可丢包有良好的拥塞控制机制如http ftp telnet 等 2.什么是三次握手与四次挥手?三次握手 第一次握手:建立连接时,客户端发送同步
2018-01-16 09:58:54
1522
转载 面试题系列(四)-数据解析
1.JSONKit、SBJson、TouchJSON和原生的区别?JSONKit、SBJson、TouchJSON 性能从左到右,越右越差,主要就是性能上的差别2.分析json、xml的区别可读性方面:基本相同,xml的可读性比较好可扩展性方面:都具有很好的扩展性编码难度方面:相对而言:JSON的编码比较容易解码难度:json的解码难度基本为零,xml需要考虑子节点和
2018-01-16 09:43:16
282
转载 面试题系列(三)-socket
1.socket编程简述它是基于TCP/IP协议,Socket就是一个可以连通网络上不同计算机程序之间的管道,把一堆数据从管道的A端扔进去,则会从管道的B端(也许同时还可以从C、D、E、F……端冒出来)。管道的端口由两个因素来唯一确认,即机器的IP地址和程序所使用的端口号。Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方
2018-01-16 09:35:30
2091
转载 面试题系列(二)-http请求
1.http请求方式?HTTP的请求方式有3种,分别是:POST、GET、HEAD。 POST和GET方法是用于数据发送的。POST 将要发送的数据单独放在一个流中进行发送,而不是附加在URL地址后面,这样做的好处是这些数据不会出现在URL地址中。GET 将要发送的数据直接添加在URL后面,如:www.sina.com.cn?username=”“&password=”“,这样的
2018-01-16 09:28:11
580
原创 单例
创建单例的两种方式只要使用其中一种 + (id)defaultManager { // 1. 第一种方式 //静态变量只会初始化一次 static Manager *sharedInstance = nil; //每次调用defaultManager的时候都返回同一个对象 if (sharedInstance == nil) {
2018-01-11 11:56:22
182
转载 @property参数详情
@property 格式:@property(参数1, 参数2)类型 名字;参数可有可无,比如: @property int age; @property (nonatomic,retain) UIButton *btn;参数主要分为3类 读写属性:readwrite/readonly setter处理:assign/retain/copy 原子性:atomic/nonatomic@p
2018-01-11 11:50:30
403
原创 webView设置请求头
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 64, Width, Height-64)];self.automaticallyAdjustsScrollViewInsets = NO;_webView.scrollView.showsVerticalScrollIndicator = NO;_webView.delega
2018-01-09 10:54:19
4718
原创 webView拦截H5按钮事件
需要遵守协议UIWebViewDelegate- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{NSString *requestString = [[[r
2018-01-08 17:42:44
2462
原创 tableview视图层级关系
前提:我在tableview的cell上面加了一个button 1. btn.superview = cell.contentViwe; 2. btn.superview.superview = cell; 3. btn.superview.superview.superview = UITableviewWrapperView; 4. btn.superview.superview.sup
2018-01-08 17:29:13
971
原创 UITableView删除按钮iOS10适配
在开发中,经常会遇到修改tableView的删除按钮的情况;默认情况下,当系统语言是中文时,删除按钮显示【删除】,英文时,显示为【del】iOS9及之前删除按钮是cell的子视图,所以我们只需要在定制cell的时候,重写layout方法,遍历所有子视图找到删除按钮修改即可,如下:- (void)layoutSubviews {[super layoutSubviews];for (UIView
2018-01-08 16:41:18
612
原创 git commit
如果commit了一个不需要commit的文件,可以对其进行撤销。 先使用git log 查看 commit日志commit 4f07d7a7cc97e2175bbdb1c20dd4ea7cc6def5feAuthor: zhangnan <zhangnan@it.com>Date: Mon Nov 6 18:11:42 2017 +0800同步老版本收银台iPhoneX的界面适配com
2017-11-07 09:37:42
651
转载 iOS图片加载框架-SDWebImage
在iOS的图片加载框架中,SDWebImage可谓是占据大半壁江山。 支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件。在项目中使用SDWebImage来管理图片加载相关操作可以极大地提高开发效率,让我们更加专注于业务逻辑实现。SDWebImage 概论1.提供了一个UIImageView的category用来加载网络图片并且对网络图片的缓存进行管理
2017-10-24 13:59:11
667
转载 指纹识别
简单介绍指纹识别功能是 iphone 5S之后推出的.SDK是 iOS 8.0 推出推出指纹识别功能的目的,是为了简化移动支付环节,占领移动支付市场.使用步骤导入框架 #import <LocalAuthentication/LocalAuthentication.h>获得当前系统版本号 float version = [UIDevice currentDevice].systemVersio
2017-10-23 16:21:33
360
转载 钥匙串访问
基本介绍苹果在 iOS 7.0.3版本以后公布钥匙串访问的SDK.钥匙串访问接口是纯C语言的.钥匙串使用 AES 256加密算法,能够保证用户密码的安全.钥匙串访问的第三方框架SSKeychain,是对C语言框架的封装. 注意:不需要看源码.钥匙串访问的密码保存在哪里?只有苹果才知道.这样进一步保障了用户的密码安全.简单使用参数介绍 Password :需要存储的密码信息.
2017-10-23 16:19:13
1038
转载 时间戳密码
基本介绍动态密码相同的密码明文+相同的加密算法–>因为每次登陆时间都不同,所以每次计算出的结果也都不相同.可以充分保证密码的安全性.服务器会计算两个时间值,当期时间和前一分钟的时间(比如:第59S发送的网络请求,一秒钟后服务器收到并作出响应,这时服务器当前时间比客户端发送时间晚一分钟,仍然能够判断准确的值)使用步骤获取MD5 首次加密的密码 // 1. 当前密码 NSString *passw
2017-10-23 16:16:29
4491
转载 MD5加密--(信息-摘要算法) 哈希算法之一
一个任意长度的字节串变换成一定长度的十六进制的大整数.注意,字符串的转换过程是不可逆的,不能通过加密结果,反向推导出原始内容基本介绍需要导入第三方框架: NSString+HashMD5特点压缩性 : 任意长度的数据,算出的 MD5 值长度都是固定的.容易计算 : 从原数据计算出 MD5 值很容易.抗修改性 : 对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别.弱抗碰撞 :
2017-10-23 16:05:41
2556
转载 Token值介绍
Token 值登录令牌.利用 token 值来判断用户的登录状态.类似于 MD5 加密之后的长字符串.用户登录成功之后,在后端(服务器端)会根据用户信息生成一个唯一的值.这个值就是 token 值.基本使用在服务器端(数据库)会保存这个 token 值,以后利用这个 token 值来检索对应的用户信息,并且判断用户的登录状态.用户登录成功之后,服务器会将生成的 token 值返回给 客户端,在客户端
2017-10-23 16:01:56
13915
2
转载 base64加密
base64 编码是现代密码学的基础基本原理原本是 8个bit 一组表示数据,改为 6个bit一组表示数据,不足的部分补零,每 两个0 用 一个 = 表示 用base64 编码之后,数据长度会变大,增加了大约 1/3 左右.(8-6)/6 可进行反向解密 Xcode7.0 之后出现的 编码有个非常显著的特点,末尾有个 = 号将文件进行加密// 获取需要
2017-10-23 15:35:42
588
转载 AFNetWorking3.0用法
AFN3.0中没有FHTTPRequestOperationManager、NSURLConnection,AFHTTPRequestOperationManager是基于NSURLConnection封装的!!现在都用的是NSURLSession了,AFN中用的是AFHTTPSessionManager了~~GET请求AFHTTPSessionManager *manager = [AFHTTPS
2017-10-23 15:12:33
339
原创 创建软连接
命令格式:ln -s / /home/good/linkname ln的链接分软链接和硬链接两种:1、软链接就是:“ln –s 源文件 目标文件”,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,类似与windows的快捷方式。2、硬链接ln源文件目标文件,没有参数-s, 会在选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文
2017-09-30 14:36:30
1204
原创 HTTP协议常用字段
URI&URLURI:统一资源标识符,不仅可以标识http,ftp等其他的网络资源 URL:统一资源定位符请求头GET :获取一个资源,同时参数直接跟在URL后面,url长度受限制2048字节 POST:不仅可以获取资源,还可以提交资源(譬如上传文件),参数放在请求体中,包大小4G HEAD:只要响应头,没有响应体,通常用于测试URL是否存在 DELETE:删除一个资源 PUT:通常修改一
2017-09-23 21:26:26
8468
转载 NS_REFINED_FOR_SWIFT
重定义Objective-C接口如果您的项目中使用了 Objective-C 以及 Swift 两种语言混编,您可能会遇到这样一个尴尬的局面:Objective-C 的 API 和 Swift 的风格相差比较大,Swift调用Objective-C的API时可能由于数据类型等不一致导致无法达到预期(比如,Objective-C里的方法采用了C语言风格的多参数类型;或者Objective-C方法返回N
2017-09-22 15:12:36
1866
转载 iOS常见加密算法
一 、MD5加密MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。 MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的,但基本是不能一样的)。 MD5算法还具有以下性质: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。
2017-09-11 11:59:00
552
原创 字典(NSDictionary)和JSON字符串(NSString)之间互转
字典转Json字符串-(NSString *)convertToJsonData:(NSDictionary *)dict{NSError *error;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];NSString *j
2017-09-08 14:18:29
12477
iOS技术概览
2017-09-08
IOS触摸事件
2017-09-08
iOS并发编程指南
2017-09-08
iOS 5 ARC完全指南
2017-09-08
coredata知多少
2017-09-08
Cocoa基本原理指南
2017-09-08
Blocks 编程要点
2017-09-08
iOS人机界面指导手册
2017-09-08
多线程编程指南
2017-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人