![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 77
来自星星的松子
一个有理想的逗比。
展开
-
iOS - 内存管理十全大补丸——内存泄露检查实战总结
前段时间被分配查应用的内存泄露问题,然后搜集了一大波内存管理相关的资料,并且在整个过程中狠狠的实践了一波。下面就把这段时间内碰到的坑(从别的地方也搜刮到很多坑),以及搜集到的一些理论知识(简洁版)总结一发。 背景:一个复杂的iOS应用可能会混合着MRR和ARC两种内存管理方式,就是有一部分文件MRR实现,而另一部分则是ARC实现(原因目测是因为复用MRR实现的旧代码)。所以就存在一种现象,如果后来原创 2016-07-17 00:12:36 · 5808 阅读 · 1 评论 -
iOS-UIApplicationDelegate学习笔记
UIApplicationDelegate协议定义了很多方法,这些方法将会在你的App的生命周期中发生重要的事件时被一个单例对象UIApplication所调用。该delegate的一些方法使得我们可以在应用状态发生变化时做一些处理操作。比如说,当应用从前台编导后台执行,就会有对应的方法被调用来响应该状态的变化。原创 2016-03-13 15:49:13 · 805 阅读 · 0 评论 -
iOS-使用URL Scheme实现App的进程间通信
iOS平台的进程间通信是一件很蛋疼的事,通过窝大量的资料搜索,最后发现好像比较普遍的实现方式则是使用URL Scheme(好吧好像别的方式我还没搞懂,准备看英文文献学习学习先哈哈哈哈哈)。原创 2016-03-13 16:19:26 · 7217 阅读 · 0 评论 -
iOS-Objective-C的属性修饰符
在苹果引入了ARC之后,属性的也相对应的增加了一些修饰符。所以这里我们分别对MRC和ARC两种情况下的属性修饰符进行学习。其实主要的区别集中在对对象生命周期进行描述的属性修饰符会有所区别而已。原创 2016-02-28 22:26:51 · 3072 阅读 · 0 评论 -
iOS-KVC/KVO学习
KVC提供了一种间接存取对象属性的方法。而且与KVC有关的方法都是在NSObject中定义的,所以只要是继承自NSObject的子类都具有KVC功能。KVO则提供了一种观察指定对象的属性的方法,当观察的对象的属性变化时,观察者会收到通知。原创 2016-02-28 16:52:09 · 604 阅读 · 0 评论 -
C++/Objective-C内存管理对比学习
C++内存管理内存分为五个区:堆、栈、自由存储区、全局/静态存储区和常量存储区。栈。存储函数中局部变量,函数结束时会自动释放。堆。由new分配的内存块,由应用程序控制它的回收(需要手动回收),即一个new应该对应一个delete。如果程序员没释放,则程序结束系统会自动回收。自由存储区。使用malloc分配的内存块,和堆类似,用free来释放。全局/静态存储区。存放全局变量和静态变量。常量存原创 2016-02-27 22:38:02 · 840 阅读 · 0 评论 -
iOS-多线程编程学习之GCD——线程组、延时、计时器等(六)
上一篇文章我们介绍了GCD,以及其队列,同步异步等概念。这次我们将探讨更多GCD的功能,包括线程组(group),栅栏(barrier),单例(once),延时(after),并发迭代(apply)和计时器(timer)。 再有了上一篇文章的基础之后,下面的内容理解起来也会相对容易,所以不会做过多说明,代码中注释也比较详细。所以直接贴代码例子鸟~大家可以下载源代码然后运行查看输出的信息,就可以原创 2016-02-27 09:57:26 · 452 阅读 · 0 评论 -
iOS-多线程编程学习之GCD——串行队列和并发队列(五)
Grand Central Dispatch(GCD)有很多部分构成,例如有很好的语言特性,运行库,还提供了系统的、高效的方式来支持具有多核处理器的iOS和OS X设备进行并发事件处理。 BSD子系统,CoreFoundation和Cocoa APIs都已经使用这个增强特性来进行扩展了,因为它可以使得你的系统和应用运行的更快,更有效率,响应更及时。原创 2016-02-27 09:51:24 · 4256 阅读 · 1 评论 -
iOS实战-自定义的横向滚动控件CustomScrollView
CustomScrollView 使用官方UIScrollView组件定制的一个横向滚动的视图。由于能力有限,暂没有抽象成一个UI组件,如果有大神能进行抽象封装,非常欢迎,大家多多交流! 1.1 说明 CustomScrollView包括诺干个子视图,可以横向滚动,滚动过程中会根据子视图所在位置进行大小缩放。即最中间的视图最大,两边呈对称状态逐渐减小。且可以通过点击按钮进行滚动,选定某个子视图原创 2016-02-26 16:08:43 · 2354 阅读 · 0 评论 -
iOS-绘图系统相关学习笔记(一)
绘图方面的知识 1.使用imageNamed:加载的图片会缓存在内存中,如果再次请求相同图片时则会直接返回图片。2.可以通过类方法imageWithContentsOfFile:或initWithContentsOfFile:来加载图片,不过这两种方式加载的图片不会缓存在内存中?!3.UIImageView实际上可以有两幅图片,一幅赋予image属性,另一幅赋予highlightedImage属性原创 2016-03-14 19:43:15 · 480 阅读 · 0 评论 -
KVC/KVO的实现原理简述
一、KVCKVC全称为key-value coding,键值编码。就是提供了一种机制可以访问一个对象的任意属性。它是通过使用字符串作为关键字而不是使用setter/getter访问器去访问一个对象实例的属性的机制。1.1 实现原理:(问题:KVC是如何访问属性的) (1)如果是取值操作,检查是否存在-,-is,或者-get的对应key的访问器方法,如果有则调用这些方法。 如果是设值操作,检查是否原创 2016-03-25 20:57:26 · 1611 阅读 · 0 评论 -
Google protocol buffer 使用和原理浅析 And 进阶使用方式之PbCodec
Google Protocol Buffer又简称Protobuf,它是一种很高效的结构化数据存储格式,一般用于结构化数据的串行化,简单说就是我们常说的数据序列化。这种序列化的协议非常轻便高效,而且是跨平台的,目前已支持多种主流语言(3.0版本支持C++, JAVA, C#, OC, GO, PYTHON等)。原创 2016-07-03 17:04:12 · 10412 阅读 · 0 评论 -
iOS-监听UITextField值改变事件
在实际情况中我们有时候在界面输入时候需要让用户输入的数据与模型同步,那么可能我们就需要监听UITextField值改变事件,然后在响应的方法中将新的值同步到模型中。这次我们主要提出三种方案,其中第一种方案是不一定有效的,后两种方案则是比较可靠的方案。一、实现UITextFieldDelegate协议。 这种方式实际上是由系统空间回调协议中的方式,并且通过查阅文档我们可以发现有以下相关接口是相关的。原创 2016-06-06 22:00:33 · 10703 阅读 · 0 评论 -
iOS-Effective Objective-C 2.0 读书笔记(二)
哈哈,上一篇可以参考。这一章主要是涉及对象、消息和运行期的一些相关特性。第7条 在对象的内部尽量直接访问实例变量 我们都知道使用了属性之后,可以通过存取方法来访问相关实例变量,也可以直接访问实例变量。原创 2016-04-24 15:52:46 · 560 阅读 · 0 评论 -
LeetCode - Reverse Vowels of a String
QuestionLink : https://leetcode.com/problems/reverse-vowels-of-a-string/Write a function that takes a string as input and reverse only the vowels of a string.原创 2016-04-23 23:33:20 · 551 阅读 · 0 评论 -
iOS-Effective Objective-C 2.0 读书笔记(一)
今天开始看了Effective Objective-C 2.0的一部分内容,然后打算记录下来一些其中提到的比较有用的注意点,然后在之后的实际开发过程中能有所规避,写出更好的代码。原创 2016-04-23 16:02:58 · 640 阅读 · 0 评论 -
iOS-Effective Objective-C 2.0 读书笔记(三)
第三章的内容主要是说接口和API设计相关的注意事项。比如说我们自己写的代码需要设计以便于代码复用时,应该注意的一些问题包括哪些。简单总结 有些注意事项实际上很简单,而且很常见,我觉得并不需要太长篇幅来解释说明大家也能理解,所以这里主要以归纳的形式列出。原创 2016-04-29 22:31:34 · 658 阅读 · 0 评论 -
国内某社交通讯大佬面试题(二)
面试时间:2016/04/07 坐标:上海 岗位:iOS开发实习生额。面试下午两点开始的。一开始给了一套笔试题。上面就三道题。我就凭记忆大概说一下。原创 2016-04-11 16:31:09 · 679 阅读 · 0 评论 -
iOS开源-图像缓存库LYImageCache
LYImageCache一个极简单的用于对UIImage图像数据进行缓存操作的库。 这个库的实现主要参考了SDWebImage中的图片缓存的实现。(大部分代码源于此,哈哈哈哈哈哈哈哈)… 目前只支持iOS平台(iOS 7.0及其以上),且需要启动ARC。一、说明缓存主要为内存缓存,还有可选的磁盘缓存方式。缓存可以指定磁盘缓存的目录。并提供一定的接口用于清除过期的缓存文件。PS: 本库乃是模原创 2016-03-27 15:33:25 · 377 阅读 · 0 评论 -
iOS-UIScrollview滑动时标题栏自动隐藏和显示效果
本文主要介绍如何实现当UIScrollview滑动时,自动隐藏和显示标题栏的效果。其中布局采用Autolayout的方式,并且为了代码精简,使用了第三方库Masonry,其使用参考【iOS-Masonry学习笔记】。使用它的原因是可以很好的结合动画效果的实现!原创 2016-03-11 12:55:56 · 3152 阅读 · 0 评论 -
iOS-多线程编程学习之NSOperation(四)
NSOperation是一个抽象类,可以用来封装一个任务的相关代码和数据。因为这是个抽象类,所以不能直接得到该类的实例化对象,而是需要继承该类实现其子类或者使用系统内置的两个子类(NSInvocationOperation和NSBlockOperation)来执行实际的线程任务。原创 2016-02-23 22:35:24 · 531 阅读 · 1 评论 -
iOS-多线程编程学习之NSThread(三)
一个NSThread对象控制一个线程的执行。使用这个类你可以在线程中执行自定义的OC方法。当你需要执行长任务时使用线程是非常好的方式,它可以避免需要执行事件处理和UI更新的主线程被阻塞。此外,线程还可以通过把大任务划分为更小的任务在多线程中进行处理,这种方式在多核计算机中可以显著提升性能。原创 2016-02-23 17:52:09 · 300 阅读 · 0 评论 -
iOS-圆形图像显示(UIImageView)
在现在很多App中开始使用圆形的图像显示方式,比如说QQ中的头像和图标,微博的头像等。这次我们就对UIImageView进行相应的设置,以便达到圆形图像的显示效果。 实现圆形图像显示的代码很简单,我们为了能让其更好的应用到项目中,我们结合之前的iOS对话框的实践,做了个小demon来展示如何拍照或从相册读取图片,然后以圆形图像的方式显示出来。界面我们的界面设计很简单,直接在storyboard原创 2016-02-04 15:05:05 · 2482 阅读 · 0 评论 -
iOS-应用的国际化和本地化
使用iOS应用的用户来自世界各地。这些来自不同国家的用户,使用的语言也不同。通过国际化和本地化过程,可以确保用户都能正常使用应用。国际化和本地化 国际化的作用就是避免在应用中写死某种本土文化(语言,货币等)。原创 2016-02-17 14:21:15 · 387 阅读 · 0 评论 -
iOS-延迟操作方法总结
在实际应用中,有时候我们会需要延时执行某些操作,所以我们这里总结了四种延迟操作的方法,并简要分析了每种方法的异同。原创 2016-02-15 17:41:57 · 377 阅读 · 0 评论 -
iOS-基础动画
在应用中加入适当的动画,可以赋予界面视觉线索,帮助用户了解应用的工作流程,从而营造更好的用户体验。这里我们的基础动画主要是基于类UIView的动画。原创 2016-02-13 10:11:42 · 339 阅读 · 0 评论 -
iOS-AutoLayout布局学习
AutoLayout是苹果在iOS6.0以后推出的多屏幕适配的布局工具,然而实际上它不仅仅是一种布局工具,它还是一种全新的布局思想。原创 2016-02-12 13:15:19 · 254 阅读 · 0 评论 -
iOS-XML文档解析(NSXMLParser)
这次我们使用iOS SDK中的NSXMLParser类来进行XML文档的解析。这个用于解析XML文档(包含DTD声明)的类是基于数据驱动的方式实现的。当它在处理XML文档过程中遇到相关节点(元素,属性,CDATA块等)的时候会通知他的委托对象进行相应处理。原创 2016-02-11 16:19:57 · 405 阅读 · 0 评论 -
iOS-使用CoreLocation定位
要使用Core Location首先我们要先了解CLLocation、CLLocationManager、CLLocationManagerDelegate等相关概念。这些是构成我们获取设备定位,朝向,速度等数据的基本类。CLLocation 一个CLLocation对象里存储了由CLLocationManager对象产生的数据。其中的数据包括地理坐标(经纬度坐标)和海拔高度。原创 2016-02-09 15:31:51 · 538 阅读 · 0 评论 -
C/C++/Java/OC在终端下编译和运行(持续更新...)
我们习惯了在各种IDE或者文本编辑器中进行代码编写,而一旦我们失去了IDE之后很多人就不知道怎么编译和运行我们的代码鸟。今天我们就来了解常用的几种编程语言如何在终端的下进行编译和运行。然后我们再简单的使用make命令来实现自动化编译和运行等操作。原创 2016-02-09 15:27:16 · 495 阅读 · 0 评论 -
iOS-AFNetWorking的应用
AFNetWorking是一款被广泛应用与iOS和OS X平台的网络库。它是基于Foundation URL Loading System来构建的,它扩展了很多Cocoa框架功能,将它们与定制的高级网络请求方法相融合。他还有非常好的模块化结构和丰富的API接口。 我们这里使用的是AFNetWorking的2.6.3的版本。在iOS升级到9.0以后,官方推荐使用NSURLSession来替代原创 2016-02-04 15:27:38 · 338 阅读 · 0 评论 -
iOS-NSNotificationCenter的应用
NSNotificationCenter提供了一种想程序中其他对象广播消息的机制(即一对多)。一个NSNotificationCenter对象本质上来说就是一张通知发送表。我们可以这样想象,有一张表,当我们在上面写下发生某件事时就通知某些人,那么当这件事真的发生时,我们就可以拿着这张表去挨个通知那些表上的人。这实际上就是观察者/订阅者模式的应用。原创 2016-02-04 20:51:03 · 255 阅读 · 0 评论 -
iOS-多线程编程学习之pthread创建线程(二)
首先这是iOS开发中最不常用的创建线程的方式,则是使用C中线程库的API来创建线程。不过作为学习我们不妨多了解一下,对比观察观察。 话不多说,直接上代码。原创 2016-02-23 17:44:27 · 342 阅读 · 0 评论 -
Objective-C Runtime 一小时入门教程(下)
来源:ian(@ianisme) 链接:http://www.ianisme.com/ios/2019.html类的归档篇苍老师的资料总要整理一下吧! 创建People.h#import <Foundation/Foundation.h>@interface People : NSObject <NSCoding>@property (nonatomic, copy) NSString转载 2016-03-07 16:58:44 · 505 阅读 · 0 评论 -
iOS-多线程开发学习(一)
iOS开发中对于多线程的支持还是比较完善的,主要包括了四种方式。这里对多线程开发基础概念进行了介绍,并总结了四种实现模式的区别。原创 2016-02-22 11:57:44 · 305 阅读 · 0 评论 -
Objective-C Runtime 一小时入门教程(中)
获取类的成员变量和属性篇苍老师在大家心目中应该有很多特征吧,下面我们通过代码来获取苍老师的特征。转载 2016-03-07 16:50:14 · 340 阅读 · 0 评论 -
iOS-Masonry学习笔记
Masonry目前是Github上很热门的iOS开源项目之一。它是一个轻量级的布局框架,比AutoLayout使用起来更简便。它还有自己的一套DSL,提供了链式的方式来描述传统的NSLayoutConstraint布局。原创 2016-02-20 18:33:06 · 413 阅读 · 0 评论 -
Objective-C Runtime 一小时入门教程(上)
如果你没有Objective-C基础,请学习了基础的iOS开发再来,这个1小时是给有一定iOS基础的童鞋的。如果你是大牛或者你感觉Objective-C Runtime太简单不用1小时学习的,也请您绕道,这或许只是我的私人笔记了。转载 2016-03-05 12:45:07 · 777 阅读 · 0 评论 -
iOS-使用NSURLConnection进行Http Get和Post请求网络数据
Http是常用的一种网络协议,可以通过Get和Post两种方式请求数据。 在OC中可以通过使用NSURLConnection类来进行Http请求获取数据。然而这个类在iOS9.0以后官方就不推荐使用了,进而推荐的是NSURLSession。此外,iOS9.0以后会限制http请求,而改用更安全的https请求。原创 2016-02-18 15:13:54 · 610 阅读 · 0 评论 -
iOS-RunLoop学习笔记
一直以来都听说过RunLoop这个东西,并且知道它是用来在某个线程中开启一种循环等待接受并处理事件状态的方法。然后好奇之下就查找了一些资料,然后发现了一篇大神对RunLoop的深入分析,看后大呼神奇!虽然看的不是很懂,好吧其实感觉看懂了皮毛而已,但是文章真的很不错,的确值得多看几次,细细品味!!!原创 2016-03-16 11:26:30 · 437 阅读 · 0 评论