从 C 到 C++
const 限定符 const 用 const 给字面常量起个名字,这个标识符就称为标识符常量,也成为常变量 定义的一般形式: const 数据类型 常量名 = 常量值 数据类型 const 常量名 = 常量值 注意事项: 常变量在定义时必须初始化 常变量在初始化之后,不允许再被赋值 #include <iostream>using namespace std;int main(void){// const int a; // Error, 常量必须初始化 const int a = 100;// a = 200; // Error 常量不能重新被赋值 int b = 22; const int *p; // const 在 * 左边,表示 *p 是一个常量,经由 *p 不能更改指针所指向的内容 p = &b;// *p = 200; // Error, 常量不能被重新赋值// int * const p2; // Error, p2 为常量 常量必须初始化 int ...
iOS事件响应及传递
本次主要是整理一下关于 iOS 中关于事件传递和响应机制,参考了一些其他资料加上自己的理解。 事件 Events 定义是 objects sent to an app informing user actions. iOS 中的事件 iOS 有三种事件类型: 触摸事件:单点、多点触控以及各种手势操作; 加速计事件:重力、加速度传感器等; 远程控制事件:远程遥控iOS设备多媒体播放等; 响应者对象 UIResponder 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接受并处理事件,我们称之为“响应者对象”。以下都是继承自UIResponder的,所以都能接收并处理事件。 UIApplication UIViewController UIView 以上三个类都继承自 UIResponder ,所以都可以接收并处理事件。 UIResponder 中提供了以下对象方法来处理接收到的事件。 //UIResponder内部提供了以下方法来处理事件触摸事件- (void)touchesBegan:(NSSet *)touches withEvent ...
iOS动画详解
iOS 动画详解 动画原理 视觉残留效应 运动模糊 做动画的时候要达到 60FPS 时候,画面才能流畅,不然用户会感觉界面卡顿。 UIView 提供的动画支持 UIView 动画本质上对 Core Animation 的封装,提供一个简洁好用的动画接口,在要求不复杂的情况下,完全可以实现很多动画。 UIView 动画可以设置的动画属性有: frame / bounds 大小变化 center 中心位置 transform 旋转平移等 alpha 透明度 backgroundColor 背景颜色 contentStretch 拉伸内容 Autolayout环境下的动画要直接修改constraint,注意 setNeedsUpdateConstraints,layoutIfNeeded的用法 UIView 类方法动画 动画的开始和结束方法 UIView Block动画 Spring 动画 Keyframes 动画 转场动画 单个视图的过渡 从旧视图到新视图的过渡 1. 动画的开始和结束方法 基本语句: 动画开始结束标记 UIView.beginAnimation ...
CollectionView 详解
最近将 UICollectionView 进行了一个全面的学习及总结,参考了网上大量的文章,这篇总结把 CollectionView 常用的知识点进行了梳理,并做了一个小 Demo。 UICollectionView基础知识 collection view 是运用一个灵活多变的布局呈现一系列有序数据项的一种方法。collection view最通常的使用使用像网格状排列来呈现数据项,但是 iOS 的 collection view 的能力不仅限于行和列。使用 collection views, 视觉元素的精确布局可通过子类化定义并被动态改变。所以你可以实现网格,栈,圆形布局,动态改变布局,或任何你可以想象的排列布局。 Collection View 是由多个对象协作而成 在上面可以看出,一个 CollectionView 视图从 data source 中获取数据信息,data source 和 delegate 来管理具体的单元对象,包括选中、未选中、高亮、未高亮等状态。Layout 决定了每个 cell 之间的边界及布局信息,并通过 layoutattributes 来决 ...
swift3实现KMP算法
引出 什么是字符串匹配? 字符串匹配是计算机科学中最古老、研究最广泛的问题之一。字符串匹配问题就是在一个大的字符串 T 中搜索某个字符串 P 的所有出现位置。其中,T 称为文本,P 称为模式,T 和 P 都定义在同一个字母表上。 什么是 KMP 算法? KMP 算法是一种改进的字符串匹配算法,由 D.E.Knuth,J.H.Morris 和 V.R.Pratt 同时发现,因此人们称它为克努特–莫里斯–普拉特操作(简称 KMP 算法)。KMP 算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。 下面从暴力匹配算法讲起一步步分析 KMP 算法的流程步骤,并用最新的 Swift3 来实现 KMP 算法。 字符串匹配的暴力算法 我们要解决的问题是从一个文本串 T 中寻找模式串 P 的位置,看到此问题第一印象就是把模式串 P 中的字符依次与文本串 T 中的字符比对,直到 P 中的所有字符都与 T 中某一段字符匹配成功,则成功找到了 P 在 T 中位置。 采用此思路,假如文本串 T 匹配到 i 位置,模式串 P 匹配到 j 位置,则 如果 T[i] ...
objc 学习笔记(二)
字符串处理NSString 认识字符串NSString NSString是一个Unicode编码、16位字符的字符序列 NSString被定义为类,引用类型,拷贝时具有引用语义。 初始化方法:字面初始化、初始化器、工厂方法 NSSring拥有恒定性,所有的操作无法更改字符串本身,如果有更改,都是返回新值的形式。 NSString拥有共享机制,引用计数管理对其有特殊的管理规则 oc的NSString和c语言的区别 NSString是一个oc对象,OC字符串是一个字符串对象,字符串常量需要用@""包含。 C语言字符串是一个数据类型,用""包含 OC中的字符串以Unicode编码,C语言的字符串以字符的ASCII码形式。 打印OC字符串用%@,打印C语言字符串用%s 三种初始化方法: NSString *str1 = @"Hello World!";//字面常量,加@才是OC的字符串NSString *str2 = [[NSString alloc]initWithCString:"Hello World!&q ...
objc 学习笔记(一)
前言 如何掌握高级编程语言 底层思维: 向下,如何把握机器底层从微观理解对象构造 语言构造 编译转换 内存模型 运行时机制 抽象思维:向上,如何将我们的周围世界为程序代码 面向对象 组件封装 设计模式 架构模式 两种开发方式 Clang或GCC命令行 clang-fobjc-arc helloword.m -fobjc-arc支持ARC内存管理 适合调试、研究、微观探查 Xcode项目 构建正规工程项目 使用大型框架,追求设计质量与代码组织 目前oc采用的LLVM-Clang的编译架构 类与对象 使用#import和#include的区别 import是oc语音的头文件导入,它能避免重复导入。确保头文件只会被导入一次。 include如果不注意很容易会重复导入,出现相互包含的编译错误。推荐使用import来导入头文件。 类和对象 类是对某一事物的描述,是抽象的,而对象是一个实实在在的个体,是类的一个实例。 类是对象的抽象,而对象是类的具体实例。 类型系统(不同的类型) 引用类型(复制的指针) 类 class 指针 pointer ...
Python 笔记
数据类型和变量 整数、浮点数、字符串、布尔值(True False)、空值、变量 字符串和编码 ord()函数获取字符的整数表示,chr()函数把编码转换成对应的字符。 由于Python的字符串的类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存在磁盘上,就要把str变为以字节为单位的bytes。 Python对bytes类型的数据用b前缀的单引号或双引号表示。 以Unicode表示的str通过encode()方法可以编码指定为bytes。把bytes变为str需要用decode()方法。 len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数。 通常在文件开头写上两句 #!/usr/bin/env python3#-*- coding: utf-8 -*- Python中,采用的格式化方式和C语言是一样的。 如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。 使用list和tuple list list是Python内置的一种数据类型,list是 ...