iOS知识笔记
Dwyane_Coding
简书:https://www.jianshu.com/u/bb2db3428fff
掘金:https://juejin.im/user/5a3cb4935188257d391d3ce8
展开
-
FBKVOController源码剖析与学习
建议查看原文:https://www.jianshu.com/p/4a3f9fe13e5a (不定时更新)源码剖析学习系列:(不断更新)1、FBKVOController源码剖析与学习2、MJRefresh源码剖析与学习3、YYImage源码剖析与学习FBKVOController是对KVO的封装,本文会分为两大部分:一、针对FBKVOController进行源码解读,剖析其封...原创 2018-09-28 10:51:36 · 386 阅读 · 0 评论 -
获取版本号[[NSBundle mainBundle] infoDictionary]
很多朋友改版本号,通过改变属性,比如说self.versionLabel = @”1.0”,版本更新后,self.versionLabel = @”1.1” 如果通过这样改,那就很麻烦了。但是如果通过代码获取info的version信息,那就很方便,以后版本更换后,只需要改变info的version,就可以了。//获取当前版本号 NSDictionary *infoDic = [[NSBun原创 2016-10-08 18:19:17 · 3941 阅读 · 0 评论 -
awakeFromNib与initWithCoder
(1)awakeFromNib和initWithCoder:差别 awakeFromNib 从xib或者storyboard加载完毕就会调用 initWithCoder: 只要对象是从文件解析来的,就会调用 同时存在会先调用initWithCoder:(2)initWithCoder: & initWithFrame: initWithCoder:使用文件加载的对象调用(如从xib或stro翻译 2016-10-21 11:19:43 · 1940 阅读 · 0 评论 -
优化UITableView性能
在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天气、照片、电话、短信、Safari、App Store、iTunes、Game Center⋯几乎所有自带的应用中都能看到它的身影,可见它的重要性。然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。实际上只转载 2016-08-26 11:30:24 · 505 阅读 · 0 评论 -
单例就是这么简单
单例目的就是为了在程序的整个生命周期内,只会创建一个类的实例对象,而且只要程序不被杀死,该实例对象就不会被释放。应用场景 比如在APP开发中我们可能在任何地方都要使用用户的信息,那么可以在登录的时候就把用户信息存放在一个文件里面,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 有的情况下,某个类可能只能有一个原创 2016-08-24 16:17:23 · 898 阅读 · 0 评论 -
最新版安装cocoaPods
上次我们讲到使用cocoapods ,但是前提是安装它,怎么安装呢,很简单.先安利一个,pod –version 可以查看pod的版本. $ sudo gem update –system // 先更新gem,国内需要切换源$ gem sources –remove https://rubygems.org/$ gem sources -a https://ruby.taobao.org/原创 2016-04-22 11:28:41 · 339 阅读 · 0 评论 -
全局变量与局部变量的区别
一、变量的分类 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效转载 2016-08-24 11:12:45 · 648 阅读 · 0 评论 -
block的声明创建以及使用
block的声明block的创建访问权限回调的用法 本人从事这么久,发现周边还是很多从事iOS的程序猿不怎么了解block 用法,即便他们其中还有几年的开发经验,但是一跟他们聊起block,他们眼睛睁得老大。另外,很多新手程序接触block时,可能也被它搞得一头雾水,所以我决定写下这篇,供大家参考, 有问题可以评论,大家一起进步。原创 2016-04-20 13:52:51 · 5129 阅读 · 1 评论 -
ScaleToFill、ScaleAspectFit、ScaleAspectFill 的区别
ScaleToFill、ScaleAspectFit、ScaleAspectFill今天码代码又碰到这个,不理解透彻是真不行了,有点伤脑筋啊~首先,百度谷歌了下,没啥好文章。草草看了几篇,基本都是差不多的内容。然后,上stackoverflow,有人问过这三者之间有啥不同。第一个回答纯文字,如下:UIViewContentModeScaleToFill转载 2016-08-03 11:28:02 · 20609 阅读 · 0 评论 -
UICollectionView使用
一、Storyboard的准备 1.在storyboard的ViewControll拖一个CollectionView 2.在collectionViewCell中添加ImageView和Label 3.创建一个UICollectionViewCell的类,并跟上面的collectionCell绑定 4.连线dataSource和delegate,并创建映射 imageView 、原创 2016-08-05 16:51:37 · 324 阅读 · 0 评论 -
iOS资源汇总(长期更新)
如何用Facebook graphic api上传视频:http://developers.facebook.com/blog/post/532/Keychain保存数据封装:https://github.com/carlbrown/PDKeychainBindingsController对焦功能的实现:http://ww原创 2016-04-18 09:45:45 · 6995 阅读 · 0 评论 -
swift02-创建Label
//创建Label var label = UILabel(frame:CGRectMake(20, 100, 100, 30)) label.text = "labelfwade" //背景颜色和文字颜色的设置 label.textColor = UIColor.blueColor() label.backgroundC原创 2016-08-01 14:36:36 · 468 阅读 · 0 评论 -
Swift01-设置button
override func viewDidLoad() { super.viewDidLoad()// var button:UIButton = UIButton(type:.ContactAdd) var button:UIButton = UIButton(type:.InfoDark); //设置按钮位置和大小 button.fram原创 2016-08-01 10:53:35 · 398 阅读 · 0 评论 -
Xcode检测解决iOS内存泄露
内存泄露是一个很严重的问题.会导致程序突然崩。下面就简单介绍下怎么使用Xcode自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码.(分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的)先加一些代码,制造内存泄漏,以下是利用Array互相引用对方,不能自动释放内存- (void)viewDidLoad {原创 2016-07-26 14:05:52 · 923 阅读 · 0 评论 -
addSubview和insertSubview 区别
子视图是以栈的方式存放的,也就是说有层次的存放 addSubview: addsubview时都是在最上面面添加 eg: UIView *v1 = [UIView new]; v1.frame = CGRectMake(100, 100, 100, 60); v1.backgroundColor = [UIColor redColor]; UIView *v2 =原创 2017-02-08 10:16:40 · 5608 阅读 · 2 评论 -
viewWtihTag的使用
我们知道[parentView removeFromSuperView]; 会把全部的view都移除。以下我们可以通过给subView设一个tag,然后遍历所有的subView,找到目标subView再删除。for (UIView *subviews in [self.view subviews]) { if (subviews.tag==100) { [s原创 2017-02-12 23:24:05 · 383 阅读 · 0 评论 -
MJRefresh源码剖析与学习
建议查看原文:https://www.jianshu.com/p/23c876f8ae39 (不定时更新)源码剖析学习系列:(不断更新)1、FBKVOController源码剖析与学习2、MJRefresh源码剖析与学习3、YYImage源码剖析与学习MJRefresh是李明杰大神的开源框架,这是一款十分优雅的刷新组件库,这开源组件无论从代码风格,可用性,易读性还是兼容性来讲都十分优...原创 2018-09-28 10:50:30 · 510 阅读 · 0 评论 -
iOS不可错过的关键字
建议查看原文:https://www.jianshu.com/p/dce05b24d288 (不定时更新)前言:我们看源码,或者面试经常遇到一些关键字,又由于网上的相关文章部分观点错误,我在此汇总了我之前的笔记以及查阅相关书籍,站在巨人的肩膀上,整合出此篇文章。总之,为了提升,为了面试,了解这些关键字,非常有必要。每个观点,我尽可能的结合代码讲解。extern当编译器遇到exter...原创 2018-09-28 10:48:34 · 227 阅读 · 0 评论 -
YYImage源码剖析与学习
建议查看原文:https://www.jianshu.com/p/83edaeeb5851 (不定时更新)源码剖析学习系列:(不断更新)1、FBKVOController源码剖析与学习2、MJRefresh源码剖析与学习3、YYImage源码剖析与学习前言:要看懂YYImage框架,最好先了解热身部分(具体的自行百度),如果懒得看,直接跨过该部分,等到下面部分有疑问,再回过头看这...原创 2018-09-28 10:46:19 · 861 阅读 · 0 评论 -
Hybird-App之选择器详解(一)
学习混合app开发,要学会一些基础才能上手。本文主要介绍元素选择器、选择器分组、类选择器元素选择器最常见的选择器就是元素选择器,文档的元素就是最基本的选择器 例如:h1{} a{} index.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>选择器</title> <l原创 2018-01-01 19:50:17 · 590 阅读 · 0 评论 -
Hybird-App之选择器详解(二)
Hybird App之选择器详解(一) 学习混合app开发,要学会一些基础才能上手。本文主要介绍ID选择器、属性选择器、后代选择器、子元素选择器,其中ID选择器和属性选择器较为常用ID选择器详解1、ID选择器: ID选择器类似于类选择器;不过也有一些重要差别 例如: #id{}index.html<!DOCTYPE html><html lang="en"><head>原创 2018-01-01 19:52:04 · 379 阅读 · 0 评论 -
优美整洁的引导页大神框架Onboard
Onboard是现在github最火的引导页框架,star已经近5k,我觉得这框架挺有意思。导语 Onboard:一个只用几行代码就可轻松创建 它是一个美丽的和迷人的iOS框架。! ![pic1] 使用1、可以用CocoaPods 下载 pod 'Onboard' 2、可以直接下载pro,然后拖进项目使用 每个onboarding实例包含两个主要组件 - 背景页和内容页。背景包括静原创 2017-12-20 16:07:38 · 1286 阅读 · 0 评论 -
类似3D效果_CGAffineTransformScale
1️⃣CGAffineTransformMakeTranslation (相对平移)假设是一个视图,那么它的起始位置 x 会加上tx , y 会加上 ty 2️⃣CGAffineTransformScale 为一个Transformation再加上缩放 3️⃣CGAffineTransformIdentity 单位矩阵变换,一般用于仿射变换的初始化或者还原。本文将用以上方法做如下gif原创 2017-12-20 16:04:45 · 517 阅读 · 0 评论 -
谈谈对iOS消息的理解
前言:OC中的消息有“名称”或者“选择器”,可以接受参数,而且可能还有返回值。 调用方法是OC经常使用的,用OC的术语来说,这叫传递消息。OC是一门动态语言。 对比下C语言,它是一门静态语言,使用“静态绑定”-——在编译器就能决定运行时所应调用的函数。void printHello() { printf("Hello, world!\n");}void printGoobye() {原创 2017-12-20 16:05:17 · 247 阅读 · 0 评论 -
单例的必要认识(深刻理解)
最近我面试人家,问他对单例的认识,他对单例的基本认识、创建方式回答全对,只有一点吞吞吐吐。单例的认识 单例模式:单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例 系统单例: 1、UIApplication(应用程序实例) 2、NSNotificationCenter(消息中心): 3、NSFileManager(文件管理):原创 2017-12-20 16:02:39 · 246 阅读 · 0 评论 -
AFNetworkReachabilityManager检测网络状态
// 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring [[AFNetworkReachabilityManager sharedManager] startMonitoring]; // 检测网络连接的单例,网络变化时的回调方法 [[AFNetworkReachabilityManager sharedManager]setReachabil原创 2016-07-25 16:13:22 · 8040 阅读 · 0 评论 -
Foundation之时间格式
NSDateFormatter *formatter = [NSDateFormatter new]; [formatter setDateFormat:@"yyyyMMdd"]; NSString *time = [formatter stringFromDate:[NSDate new]]; NSLog(@"%@", time);原创 2016-05-30 20:53:35 · 441 阅读 · 0 评论 -
iOS本地化 NSLocalizedString的使用
在iOS设备,包括iPhone和iPad是全球可用。显然,iOS用户都来自不同国家,说着不同的语言。为了提供出色的用户体验,你可能希望以多种语言提供您的应用程序。适应应用程序以支持特定语言的过程通常被称为本地化。Xcode中有本地化的内置支持。所以它很容易为开发商通过本地化的功能和一些API调用国际化的应用程序。一、NSLocalizedString的定义:#define NSLocalized原创 2016-05-16 16:46:11 · 9634 阅读 · 0 评论 -
单例模式两种创建方法详解
IOS 中单例设计模式的解读与用法一、单例的作用 顾名思义,单例,即是在整个项目中,这个类的对象只能被初始化一次。它的这种特性,可以广泛应用于某些需要全局共享的资源中,比如管理类,引擎类,也可以通过单例来实现传值。UIApplication、NSUserDefaults等都是IOS中的系统单例。二、单例的写法 单例的写法常用转载 2015-12-03 19:38:01 · 672 阅读 · 0 评论 -
Objective-C语法之KVC使用
Objective-C语法之KVC使用除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性。下图来自苹果官网: 如何使用KVC存取对象属性呢?看个示例1、使用KVC定义一个Student类,继承于NSObject。.h文件#import @interface Student :转载 2015-12-18 17:01:11 · 323 阅读 · 0 评论 -
typedef常见用法
typedef常见用法1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明2.数组类型定义例如: typedef int array[2];描述: array等价于 int [2]定义; array转载 2016-01-01 12:18:56 · 279 阅读 · 0 评论 -
(UILongPressGestureRecognizer)
IOS给tableview的cell添加长按手势执行两次(UILongPressGestureRecognizer)这里我们为tableview添加长按手势 UILongPressGestureRecognizer *longPressGr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selec转载 2016-01-18 23:36:59 · 468 阅读 · 0 评论 -
UITableViewCell的选中时的颜色及tableViewCell的selecte与deselecte
分类:iOS开发(76) 目录(?)[+][cpp] view plaincopy1.系统默认的颜色设置 [cpp] view plaincopy//无色 cell.selectionStyle = UITableViewCellSelec转载 2016-01-18 23:31:53 · 476 阅读 · 0 评论 -
属性参数的区别
@property(nonatomic,assign)int age;在Student类中定义了一个是整型属性age,用于存储学生的年龄。它有两个参数,一个是nonatomic,它代表对属性赋值的时候不加锁,即在多线程环境下访问时可能会出现数据错误,如果需要在多线程环境下运行,为保证数据不会出现错误,可使用atomic参数,它会在对属性赋值的时候加锁。另一个参数是assign,对于原创 2015-12-31 18:03:32 · 1599 阅读 · 0 评论 -
NSUserDefaults 数据持久化
NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接转载 2015-12-09 20:39:13 · 305 阅读 · 0 评论 -
关于重写getter的方法和setter方法
我们都知道,当我们利用@property创建一个属性的属性的时候 它会声明属性和创建该属性的setter 和 getter方法 从英文单词来看,setter方法是是赋值用的,而getter方法是取值用的每当用于需要赋值或者取值时,系统都会自动调用这两个方法但是有时我们需要增加里面的功能(比如说加入具体的数组,加入判断语句····),那就需要重写方法原创 2015-11-23 12:28:51 · 1550 阅读 · 0 评论 -
iOS 的播放影片
在iOS開發上,如果遇到需要播放影片,如開機動畫…,我們很習慣地會使用MediaPlayer來播放影片,因為很方便使用,所以就一直使用下去。但是隨著客戶的要求越來越嚴苛,尤其是過場動畫或互動效果上的表現。所以如果在一些動畫中還挾帶影片一起運算,那勢必機器會跑不動。所以在iOS 4之後,我們可以使用AVPlayer這個類別來進行更細微的操作。備註:MediaPlayer的影片是放在UIV转载 2015-12-05 10:54:13 · 727 阅读 · 0 评论 -
AVAudioSessionCategory说明
AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound用于非以语音为主的应用,使用这个category的应用会随着静音键和屏幕关闭而静音。并且不会中止其它应用播放声音,可以和其它自带应用如iPod,safari等同时播放声音。注意:该Category无法在后台播放声音 AVAudioSes转载 2015-12-08 19:14:34 · 507 阅读 · 0 评论 -
c语言的按位运算符
c语言的按位运算符& 按位与 | 按位或 ^ 按位异或 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码转载 2015-09-28 23:29:30 · 535 阅读 · 0 评论 -
装xcode7创建window界面出现错误解决方法
装了新xcode后,无意中发现会报错,崩溃。查资料和看英语,终于找到解决方法。错误: Xcode7 7.1出现:a.2015-11-05 11:57:29.057 test[1729:59405] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:原创 2015-11-05 11:53:45 · 598 阅读 · 0 评论