函数式编程 作为iOS开发者,常用Masnory/SnapKitMasonry是常用的自动布局的第三方框架 Snapkit是Masonry团队打造的swift版本的自动布局框架一个典型的Masonry的语句make.centerY.equalTo(self).offset(100);就是这个”.”让Masonry更加鲜活的展示给了开发者。这就是链式编程。链式编程概要如果想...
面向切面编程 切面可以简单地理解为嵌入不同函数中的功能相同的操作(打印调试信息等),每类功能相同的操作可以抽取出一个切面。 OOP:面向对象编程,针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 AOP:面向切面编程,针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。 AOP是处理某个步骤和阶段的,从...
swift基础语法练习 import UIKitvar str = "Hello, playground"var num = 5num += 5class person { var name = "zhangshanshan" var address = "上海市浦东新区" var age = 5 func updateInfo(age : Int
UIViewController生命周期 UIWindow如果相当于画框的话,UIViewController相当于是一个画布。1.创建一个类继承于UIViewController2.loadView方法当访问UIViewController的view属性时,view如果此时是nil,那么VC会自动调用loadView方法来初始化一个UIView并赋值给view属性。此方法用在初始化关键view,需要注意的是,在view初始化之前,不能先调
重写、覆盖、重载、多态 override->重写(=覆盖)、overload->重载、polymorphism -> 多态【重写】override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则: 1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2、重写方法的访问修饰符一定要大于被重写方法的
常见的语言编码 常见的语言编码有:GB2312:简体中文编码,一个汉字占用2字节,在大陆是主要编码方式。BIG5:繁体中文编码。主要在台湾地区采用。GBK:支持简体及繁体中文,但对他国非拉丁字母语言还是有问题。UTF-8:Unicode编码的一种。Unicode用一些基本的保留字符制定了三套编码方式,它们分别UTF-8,UTF-16和UTF-32。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个
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.用
面试题系列(七)--基础知识 1.事件响应(responder chain)只有继承了UIResponder的类才能响应touch事件,先是最上层的view响应事件,如果该view有视图控制器的话会是下一个响应者,否者就是该view的父视图,这样至上而下传递事件。直到单例UIWindow对象,最后是单例UIApplication对象以终止,UIApplication的下一个响应者是nil,已结束整个响应循环。事件在传递过程
渐变色 给视图添加渐变色,示例如下:rect.origin.y = CGRectGetMaxY(headView.frame); rect.size.height = 50; UIView *titleView = [[UIView alloc] initWithFrame:rect]; CAGradientLayer *gradient = [CAGradientLayer lay
UIColor,CGColor,CIColor三者的区别和联系 一、UIColor UIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化。UIColor包含了一些类方法用于创建一些最常见的颜色,如白色,黑色,红色,透明色等,这些颜色的色彩空间也不尽相同(白色和黑色是kCGColorSpaceDeviceGray,红色的色彩空间是kCGColorSpaceDeviceRGB)
面试题系列(六)-基础知识 1.多线程、特别是NSOperation和 GCD的内部原理。2.运行时机制的原理和运用场景。3.SDWebImage的原理。实现机制。4.如何解决TableView卡的问题。tableView 滑动卡的问题主要是因为:从缓存中或者是从本地读取图片给UIImage的时候耗费的时间。需要把下面的两句话放到子线程里面: NSData *imgData = [NSData dataWithContents
SWift入口分析 1.swift为什么不需要main在c/c++及其它语言中都有一个main函数,程序从main作为起点,开始执行程序,如下:int main(int argc, const char * argv[]) {printf("Hello, World!");return 0;}main函数实际上是一个特殊的函数,为了能找到程序入口,大多楼语言都约定main()函数作为入口。那么
fallthrough的用法注意总结 在swift的switch中,case后面加了fallthrough的用法,就和OC的case后面没加break的用法是一样的!使用fallthrough需要注意的有:1.加了fallthrough后,会直接运行【紧跟的后一个】case或default语句,不论条件是否满足都会执行var age = 10switch age {case 0...10: print("小朋友")
SWift基本语法(二) 一 可选类型知识点补充例一 :强转并且制定类型let str01 = "23" //打印结果: "23"let age : Int? = Int(str01) //打印结果 :23问题 : 该例子转化的结果为什么需要用可选类型来接收?解答 : 因为很有可能是转化不成功的,如果此时不用可选类型来接收的话,万一转化失败,那么该值就为空(nil),如果不选择可选类型来接收,程序会崩溃.例二 : 获取
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) {
面试题系列(五)-网络协议 1.UDP/TCP的区别UDP 是用户数据报协议: 主要用在实时性要求高以及对质量相对较弱的地方,但面对现在高质量的线路不是容易丢包除非是一些拥塞条件下, 如流媒体 TCP 是传输控制协议:是面连接的,那么运行环境必然要求其可靠性不可丢包有良好的拥塞控制机制如http ftp telnet 等 2.什么是三次握手与四次挥手?三次握手 第一次握手:建立连接时,客户端发送同步
面试题系列(四)-数据解析 1.JSONKit、SBJson、TouchJSON和原生的区别?JSONKit、SBJson、TouchJSON 性能从左到右,越右越差,主要就是性能上的差别2.分析json、xml的区别可读性方面:基本相同,xml的可读性比较好可扩展性方面:都具有很好的扩展性编码难度方面:相对而言:JSON的编码比较容易解码难度:json的解码难度基本为零,xml需要考虑子节点和
面试题系列(三)-socket 1.socket编程简述它是基于TCP/IP协议,Socket就是一个可以连通网络上不同计算机程序之间的管道,把一堆数据从管道的A端扔进去,则会从管道的B端(也许同时还可以从C、D、E、F……端冒出来)。管道的端口由两个因素来唯一确认,即机器的IP地址和程序所使用的端口号。Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方
面试题系列(二)-http请求 1.http请求方式?HTTP的请求方式有3种,分别是:POST、GET、HEAD。 POST和GET方法是用于数据发送的。POST 将要发送的数据单独放在一个流中进行发送,而不是附加在URL地址后面,这样做的好处是这些数据不会出现在URL地址中。GET 将要发送的数据直接添加在URL后面,如:www.sina.com.cn?username=”“&password=”“,这样的
单例 创建单例的两种方式只要使用其中一种 + (id)defaultManager { // 1. 第一种方式 //静态变量只会初始化一次 static Manager *sharedInstance = nil; //每次调用defaultManager的时候都返回同一个对象 if (sharedInstance == nil) {