![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ios开发学习笔记
文章平均质量分 80
ohyeahhhh
这个作者很懒,什么都没留下…
展开
-
剪贴板UIPasteboard
剪贴板的分类剪贴板分为系统的和app私有的剪贴板必须有个名字。系统的剪贴板有两个,一个叫UIPasteboardNameGeneral,一个叫UIPasteboardNameFind,它们的使用场合不一样。通过 generalPasteboard可以获得名字为UIPasteboardNameGeneral的剪贴板,通常用来复制、剪切和粘贴。 一个创建或者获取剪贴板的方法pastebo...原创 2018-09-12 22:33:45 · 1429 阅读 · 0 评论 -
GCD
GCD 的整体认识GCD (grand central dispatch)直译过来是宏大的中心分配,实际上就是一个线程管理技术。这种技术区别于程序员自己手动创建和管理线程,它可以自动根据系统的情况按需创建线程和管理线程。这里所说的系统的情况包括系统运行所在的处理器是多少核的,也就是说,这个GCD技术可以均衡任务到多核上,发挥处理器的多核性能。 GCD的便利在于,它将上述的复杂功能封装出简单易用的接原创 2016-07-20 22:10:29 · 1869 阅读 · 0 评论 -
run loop 再次理解和总结
run loop是什么?RunLoop 的本质就是一个函数,其内部是一个 do-while 循环。 线程需要调用runloop这个函数,来处理传入的事件。线程会一直停留在这个循环里;直到超时或被手动停止,该函数才会返回。run loop的功能处理事件,包括由输入源传来的事件,和定时器传来的事件。 产生有关运行行为的notifications。可以在线程中给runloop添加监听者。 run l原创 2016-07-22 10:36:29 · 497 阅读 · 0 评论 -
iOS 网络请求 笔记
一、url请求网络请求的组成部分有服务器地址、请求参数,以及请求方式。在iOS中,一个网络请求用NSURLRequest(或者其子类NSURLMutableRequest)来表示。NSURLRequest适合于get请求,NSURLMutableRequest可以是post请求。get方式下,服务器地址和请求参数都可以明文包含在u原创 2016-05-07 15:46:09 · 2002 阅读 · 0 评论 -
CocoaPods 命令和使用
CocoaPods 命令pod init 在新建的项目根目录下运行该命令,为当前项目新建podfile文件。 pod install 下载和配置 podfile里定义的项目依赖(不包括已经下载和配置的项目依赖)。(新建podfile.lock文件)并将每个依赖的版本信息记录在podfile.lock文件中。为项目新建.xcworkspace文件。 pod outdated 列出比podfile.原创 2016-07-11 09:58:33 · 4129 阅读 · 0 评论 -
collection View学习笔记
collection View的三个逻辑组成部分:数据、子视图、布局。一、collectionView和tableView的比较1. 和tableView的共同点:(1)都继承scrollView (2)都需要两个代理:delegate和dataSourceDelegate (3)都按分区(section)和单元格(cell)对子视图进行管理 (4)都有重用机制,每次从重用池中取出一个cell原创 2016-04-22 19:18:00 · 1128 阅读 · 0 评论 -
哈希算法
一、哈希算法验证数据完整性可以用哈希算法。对发送数据和接收数据的哈希值进行比对,如果一致,证明接收数据与发送数据一致,及数据完整。SDK提供了哈希算法有关的API,支持MD2、MD4、MD5、SHA-1、SHA224、SHA256、SHA384、SHA512算法。方法声明在< CommonCrypto/CommonDigest.h > 举例:MD5算法API使用方法 MD5加密,结果为32位十六原创 2016-05-07 16:40:56 · 2701 阅读 · 0 评论 -
iOS timer计时器
timer,计时器,就是用来计时的,可以将它和要处理的动作绑定起来,让这个动作在某段时间之后执行,或者周期性地执行。一、timer的工作原理timer的工作和run loop密不可分,由于平常我们使用Application Kit和UIKit来新建的app,在app的主线程启动的时候就自动启动了一个runloop,因此在主线程中使用timer感觉不到runloop的存在。如果要在分线程中使用time原创 2016-05-07 16:16:47 · 3706 阅读 · 0 评论 -
keychain service钥匙串服务
keychain service钥匙串服务是iOS提供的用于管理用户密码、密钥、证书、标识的服务,它相当于一个加密容器,app可以把相关的用户信息以钥匙条目的形式存储到其中,钥匙串服务会将所有存储到其中的条目进行加密,并保护起来,只允许创建这个条目的app访问它。app要把用户信息(钥匙)添加到钥匙串服务(钥匙串)中,在必要时从钥匙串服务中取出用户信息,这些动作需要用到Keychain Servic原创 2016-05-07 16:08:07 · 3065 阅读 · 0 评论 -
notifications 消息通知(本地事件通知)
一、 涉及的概念涉及的概念:事件,消息,消息中心,监听者,消息发送者二、 基本流程:路线一: 1.消息中心登记监听者及其需要监听的消息(也叫注册监听者)。 2.消息发送者发送消息。 3.消息中心向所有已登记的监听者广播此消息。 路线二: 1.消息中心登记监听者及其需要监听的消息(也叫注册监听者)。 2.发送者将消息添加到消息队列,消息队列将类似的消息按一定规则集中起来再送达消息中心。原创 2016-07-07 10:14:07 · 1443 阅读 · 0 评论 -
iOS 多线程的管理
本文讲创建分线程的方法。第一种:直接调用NSObject的方法第二种:利用NSThread创建新线程第三种:创建NSOperation,并加入到队列NSOperationQueue中第四种:GCD (grand central dispatch)线程优化技术第一种:直接调用NSObject的方法所有的类都是NSObject的子类,因此都继承了这些方法:- (void)performSele原创 2016-05-07 16:37:43 · 2006 阅读 · 0 评论 -
C是如何支持OC运行的
C是如何支持OC运行的objc是C的扩展,它的使用是由C语言的类库支持的。其中最根本的就是objc类库,从其头文件先看<objc/objc.h>下面逐句来看看,这个头文件都定义了些什么。本文都是以先代码,后解释的顺序进行的。 一、先看头文件中定义的各种数据类型,这些类型与OC中面向对象的基本概念有着密切联系1.OC的类typedef struct objc_class *Class; ` //原创 2016-04-02 17:21:56 · 1076 阅读 · 0 评论 -
JavaScriptCore学习总结
JavaScriptCore可以完成OC中执行js语句,在oc中访问js代码中定义的全局变量(包括方法),也可以使得oc中定义的属性、方法得以在js代码中被调用。 整个JavaScriptCore framework包含的头文件如下,其中开放的接口可以分为两部分,一部分是C接口,一部分是OC接口。如果需要使用OC接口,那就引用JavaScriptCore.h,如果只需要使用C接口,那就引用Java原创 2017-01-23 11:05:47 · 1202 阅读 · 0 评论 -
有关coreGraphics
coreGraphics 对于iOS只能在drawRect中使用,因为只有在drawRect方法中可以通过UIGraphicsGetCurrentContext方法获取到可以用来绘图的context。1.重新绘图相关方法和属性通过UIView的setNeedsDisplay或setNeedsDisplayInRect:来使view重新调用drawRect方法进行绘图。contentMode 该属性原创 2017-01-23 10:41:19 · 446 阅读 · 0 评论 -
xcode配置问题
header search path设置header search path,可以让xcode找到头文件所在位置。 只要把头文件所在位置加到header search path(不管该头文件是否在本项目内),就可以引用到该头文件,而不会报找不到头文件的错误提示。Link Binary With Libraries在Link Binary With Libraries中链接一个库,可以让本项目访问到原创 2017-01-23 10:37:12 · 408 阅读 · 0 评论 -
xcode command line tool
xcode command line tool xcode 命令行工具 作用:使得终端可以找到并运行xcode的相关程序。 命令:xcode-select 这个命令是用来选择xcode command line tool默认会使用的xcode(尤其在电脑中安装了多个xcode时,它的作用更加明显)。设定了以后,当终端要使用xcode的可执行程序, xcode command line too原创 2017-01-23 10:35:39 · 1088 阅读 · 0 评论 -
安装cocoapods遇到的问题总结
问题一卡在setting up master repos过不去问题二升级ruby问题三homebrew 出问题 brew install无法运行问题四ruby和gem到底什么关系问题五当前可用的rubygem的下载源问题一:卡在setting up master repos过不去运行 pod setup之后,卡在上面那句话过不去。可以尝试自己直接到~/.cocoapods/repos下构建一原创 2016-11-04 11:36:23 · 391 阅读 · 0 评论 -
SDWebImage的探索(1)
SDWebImageOperation定义了一个SDWebImageOperation协议,协议仅定义了一个cancel的方法。SDWebImageCompat一个实现图片缩放的工具类。写了一个根据缓存的key是否包含『@3x』或『@2x』来把图片压缩到合适尺寸的方法,居然用了我今天才碰了壁的递归。。。支持动画。用到一个inline关键字来修饰一个方法。网上查到意思是表示内联函数。内联函数类似于原创 2016-07-26 22:16:03 · 884 阅读 · 0 评论 -
GATT协议及蓝牙核心系统结构
本文内容是阅读自以下链接后整理的笔记,理解还不深:https://www.bluetooth.com/specifications/bluetooth-core-specificationhttps://www.bluetooth.com/specifications/generic-attributes-overviewGATT协议GATT generic Attributes的缩写,中文是通用属原创 2016-08-10 19:43:36 · 21553 阅读 · 4 评论 -
iOS coreBluetooth编程中需要注意的问题
iOS 设备作为中心设备(central device)时需要注意:(1)一定要对central Manager保持强引用,也就是说central Manager需要是一个全局变量不能是局部变量,否则不能启动扫描。 (2)连接到peripheral之后,一定记得为peripheral设置代理,否则无法进行服务和特征的发现。 (3)有关CBCentralManagerDelegate协议 协议方原创 2016-08-10 19:01:13 · 3596 阅读 · 1 评论 -
UITableView 总结
知识点回顾: 1.TableView 2.UITableViewController 3.两个协议,一个关于数据加载的协议< UITableViewDataSource >,一个关于性外和外观的协议< UITableViewDelegate > 4.对NSIndexPath类的扩展 5.tableView的单元格cell 6.响应点击事件7.重用机制下布局cell的子视图时需要注意的问题原创 2016-04-16 16:22:12 · 3369 阅读 · 2 评论 -
屏幕适配 size class
1. size class尺寸类型如果把屏幕的长和宽都按长度划分三种类型:压缩(compact)、任意(any)、常规(regular),那么长和宽的组合就有9种类型。这里我把每一种类型称为一种模式。另外,屏幕的状态根据尺寸大小和其方向可以分为很多情况。模式和屏幕的状态有着对应关系,可以是一对一,也可以是一对多。比如说,一种模式叫任意模式,也就是长是任意的,宽也是任意的,这种模式可以对应所有的屏幕状原创 2016-04-20 21:46:12 · 1250 阅读 · 0 评论 -
UIView的属性介绍
UIView的属性介绍了解View的属性对于设置各种控件的特点应该很有帮助的。看着官网文档来梳理一下:alpha 透明度hidden 是否隐藏opaque 设成YES就是不透明的,下面的View都会被遮盖center、frame 相对父view的位置。center是中心,frame也包含了view的大小 bounds 指的是view的可见区域,区域的起始点和长宽都是相对view本身的坐标的tr原创 2016-03-19 21:21:55 · 497 阅读 · 0 评论 -
Cocoa Predicates Classes
Cocoa Predicates类predicate,论断,一种逻辑表达。格式基础变量用$表示,如$VARIABLE_NAME平时用于string的格式也可以用%@,在格式里代表对象%k,在格式里表示keyPath比较!=和<>都表示不等于BETWEEN是否介于两者之间 格式BETWEEN{ $Lower,$UPPER} 如1 BETWEEN { 0 , 33 }NSPredi原创 2016-03-22 21:51:10 · 547 阅读 · 0 评论 -
iOS 8 blurEffect模糊效果
实现模糊效果四走:1.新建一个UIBlurEffect。 2.新建一个UIVisualEffectView,初始化时指定Effect为上面的UIBlurEffect对象,指定模糊类型(UIBlurEffectStyleDark、UIBlurEffectStyleUltraLight、UIBlurEffectStyleLight)。 3.设置UIVisualEffectView对象的位置大小 4原创 2016-03-26 19:30:31 · 604 阅读 · 0 评论 -
CALayer 类的介绍(创建+属性)
CALayer类,也就是图层layer,管理基于图片的内容,可以在内容中展示动画。CALayer本身也有一些可视化的属性,比如边界,背景色和阴影。CALayer也存储了在layer上的可视化内容的初始值,包括他们的坐标,大小,变幻等等。layer遵守CAMediaTiming协议,管理动画的时间间隔,步长等等。一个layer可以由view来创建,这种情况下,layer的代理就是创建它的view。对于自己创建的原创 2016-03-26 19:48:21 · 591 阅读 · 0 评论 -
UI页面跳转和传值
一、页面跳转:利用navigation实现跳转和利用模态跳转的区别: navigation实现跳转,始终在同一窗口,由导航栏来管理不同的viewController的加载和退出,因此导航栏始终在。 模态实现跳转,是新建一个窗口,如果需要新的窗口也具有导航栏,那么要重新设置导航栏。二、传值在从view1跳转到view2的情况下,根据传值的方向可划分为两种情况:情况一:从view1传值到view2这原创 2016-04-05 11:23:59 · 1576 阅读 · 0 评论 -
UINavigationBar的视图层级关系
第一次比较真切地感受debug view hierarchy的作用。用它来探究一下UINavigationBar的视图层级关系。触发我去看这个的原因是我在学习《动态修改UINavigationBar的背景颜色》中遇到了疑问。下面集合小例子来说明探究结果。从view hierarchy可以看到,当为navigationBar设置了背景图片以后,一个没有添加任何item的navigationBar从底到原创 2016-04-08 11:01:48 · 3839 阅读 · 0 评论 -
使用appearance proxy定制控件的默认外观(详解)
定制默认外观,也就是使用appearance proxy。下面就来详细介绍appearance proxy。appearance proxy外观代理:外观代理,它是一个管理可视化类(比如控件)的默认外观的对象。我们可以通过这个类的外观代理,来修改这个类的默认外观(与外观有关的属性的默认值),或者这个类在某种场合下的默认外观。需要遵守协议:UIAppearance、UIAppearanceContainer原创 2016-04-09 16:13:22 · 1966 阅读 · 0 评论 -
ios使用常用正则表达式验证密码身份证手机号【转】
在项目中,我们在验证用户的输入,最简单的方法就是使用正则表达式了,ios系统也提供很方便的方法,让我们可以轻松的来验证用户名,密码,身份证号 ,手机号等;下面附上我在项目中用到的正则表达式的验证方法,由于比较常用,大家最好封装成+静态的方法,便于使用:我把常用的方法,使用静态方法封装到一个 Utils类里面,直接使用类名调用即可:头文件://// Utils.h// AutoSizing/转载 2016-03-23 19:46:18 · 556 阅读 · 0 评论 -
KVO的一个例子
结构 之前写过KVO的原理,这里放一个简单的例子。既然KVO就是一个对象监视着另一个对象,那么我就写一个这样的小故事,就是从前有一个女孩,就是OYME,她找了个男朋友OYBoyFriend,这个男朋友十分关注OYME,OYME开心,他就开心,OYME不开心他就不开心。 也就是说,OYBoyFriend的mood属性要跟着OYME的mood属性变化。 OYME.h#import <Found原创 2016-03-19 19:31:08 · 514 阅读 · 0 评论 -
C语言输入函数与缓冲区
C语言输入函数与缓冲区调用以下输入函数,并从键盘输入内容并回车后,缓冲区的情况 函数 缓冲区是否留下’\n’ scanf() yes gets() no getchar() yes对于会在缓冲区留下换行符’\n’的方法,如果连续两次调用,输入完第一次以后,会自动跳过第二次输入,为什么呢?因为实际上,C语言采用了缓冲区的机理,我们的输入的字符(包括回车)都会先存入输入缓原创 2016-03-19 19:10:24 · 791 阅读 · 0 评论 -
storyboard和xib使用总结
视图控制器的可视化管理工具storyboard和xib1. storyboardstoryboard的作用是可以把所有的viewController以及其管理的view都展示出来,并且用线和箭头表明他们之间的跳转关系。需要在代码中使用storyboard中的某个controller时,需要先获取storyboard,然后再通过storyboard获取其中某个controller的一个实例。具体要获取原创 2016-04-20 22:05:26 · 1130 阅读 · 0 评论 -
UI自动布局
当内部或外部条件发生变化的时候,自动重新计算视图的位置和大小。对于ios应用,可以触发自动布局的变化可以分为外部变化和内部变化: 自动布局需要通过约束constraint来实现。下面,先说明使用约束来实现自动布局的原理,后说明如何创建、修改、查看约束。原创 2016-04-19 20:06:37 · 3381 阅读 · 0 评论 -
Objective-C 协议 protocol
Objective-C 协议 protocol OC协议protocol用来定义了一些方法,是给用到某功能的类必须要实现的。非常像Java的监听器接口,必须要实现onClick()方法一样。-协议的定义:用尖括号< 协议>原创 2016-03-19 11:16:09 · 563 阅读 · 0 评论 -
Objective - C类的扩展
Objective - C类的扩展有关类的笔记- 通过 “category” 给现有的类添加方法-扩展类的私有方法和属性原创 2016-03-19 11:41:08 · 583 阅读 · 0 评论 -
Objective-C集合
Objective-C的集合都是Cocoa 或者Cocoa Touch类。NSArray可以存储不同类型的对象,从零开始标号,有序数组。1. 新建构造方法[NSArray arrayWithObjects:someObject, someString, someNumber,……,nil] 主要注意,最后要添加一个nil表示结束 使用字面量的话,不需要加nil NSArray *someArr原创 2016-03-19 17:32:43 · 524 阅读 · 0 评论 -
Objective-C block (块)
block块超级像函数指针- 语法1. 定义和使用double (^multiplyTwoValues)(double, double) = ^(double firstValue, double secondValue) { return firstValue * sec原创 2016-03-19 17:41:23 · 491 阅读 · 0 评论 -
Objective-C内存管理
Objective-C内存管理- MRC(Manual Reference Counting人工引用计数)1. retain copy assign release autoreleaseassign就是针对基本数据类型的,赋值就是赋值 其他的是针对指针的,通常OC对象都是通过指针来引用 [对象 retain]会使对该对象的引用增加一,release相反,减一。 [对象 copy]通常会使获得原创 2016-03-19 17:46:04 · 481 阅读 · 0 评论 -
Objective-C KVC&KVO
Objective-C KVC&KVO- KVC(Key - Value Coding,键值编码)使用属性名或属性路径来访问类的属性。 key,就是@”属性名” keyPath,就是属性的路径,@”属性名.属性名“。 什么意思呢? 已知一个类,定义了属性NSString *name和一个结构体变量person(person中有一个变量为age)。我们假设这个类有个对象是p; 那么我们要访问原创 2016-03-19 18:51:03 · 578 阅读 · 0 评论