oc
文章平均质量分 90
海的天空1661
有了别人的差距,才发现自己的肤浅。
展开
-
iOS-使用AVCaptureSession自定义相机(AVFondation)
关于iOS调用摄像机来获取照片,通常我们都会调用UIImagePickerController来调用系统提供的相机来拍照,这个控件非常好用。但是有时UIImagePickerController控件无法满足我们的需求,例如我们需要更加复杂的OverlayerView,这时候我们就要自己构造一个摄像机控件了。并且个人发现使用系统的UIImagePickerController会发生内存泄漏,但是原创 2017-06-20 15:43:50 · 1046 阅读 · 1 评论 -
NSAssert(断言)
NSAssert()是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并且可以自定义异常描述。NSAssert()是这样定义的: #define NSAssert(condition, desc)condition是条件表达式,值为YES或NO;desc为异常描述,通常为NS转载 2017-04-24 17:31:54 · 755 阅读 · 1 评论 -
xcode-select: error: tool 'xcodebuild' requires Xcode错误的解决办法
当用下面的命令想查看源码时候 报错一个错误。xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m提示我bogon:~ hongbaodai$ xcrun --sdk iphoneos --show-sdk-pathxcrun: error: SDK "iphoneos" cannot be locatedxcr...转载 2018-08-21 10:59:00 · 1733 阅读 · 0 评论 -
iOS NSDictionary 内部原理、 深浅复制、kvc与setObject问题
一:字典内部原理二:key的copy问题三:kvc与setobject forkey问题 / setValue forkey 和 setObject forkey问题一:字典内部原理NSDictionary使用原理 1.NSDictionary(字典)是使用hash表来实现key和value之间的映射和存储的,hash函数设计的好坏影响着数据的查找访问效率。...原创 2018-08-27 11:45:40 · 6541 阅读 · 2 评论 -
ios Block底层详解、框架结构:捕获、对象类型、__block、__forwarding、循环引用
1:捕获2:block类型2.1:问题 :mrc环境下 下面讲的都是mrc环境下,会真实很多2.2:在arc下,block 自动加上copy的情况---:返回block。2.3:在arc下,block 自动加上copy的情况---:强指针__block;2.4:arc环境下:方法名中有usingBlock的方法参数时,也会进行copy操作。2.5:在arc下,block ...原创 2018-08-08 20:23:58 · 2905 阅读 · 0 评论 -
iOS 实现一个颜色渐变的弧形进度条 CAShapeLayer CAGradientLayer UIBezierPath
渐变色圆弧形进度条,本文用 CAShapeLayer CAGradientLayer UIBezierPath来实现。不过过程中需要注意mask这个概念,这个后面会详细说到。1:首先创建CAGradientLayer,一个你需要的渐变的颜色的layer,并且加到父view上。/** 创建彩色layer 并把layer添加到view的layer上 */- (void)setMuchC...原创 2018-08-09 16:17:54 · 3364 阅读 · 2 评论 -
iOS 三种工厂模式(简单工厂模式、工厂模式、抽象工厂模式)
原文转载说明:在我理解中,这里所谓的抽象,其实就是制定某一个接口规范。具体体现在代码里,就是设置一个基类,基类遵守某一套接口规范,但是其具体的实现则通过子类化来完成。当然,这里我们也可以使用协议来规范这套接口规范。相对的,具体就是具有对抽象做子类化之后产生的实体。1. 简单工厂模式如何理解简单工厂,工厂方法, 抽象工厂三种设计模式?简单工厂的生活场景,卖早点的小摊贩,他给你提供包子...转载 2018-07-30 11:56:37 · 827 阅读 · 0 评论 -
iOS Category、 Load 、Initialize 底层详解
一:Category 类内部原理一个类永远只有一个类对象。那分类的方法存放在哪里。运行起来后,最后对象方法统一都会放在类对象中。如果存在类方法,那么统一都会放在元类方法中。分类的合并是 运行时通过runtime动态的讲分类的方法合并到类方法和元类方法中。那编译时刻 分类的最终数据结构就是下面这个结构体,下面这个样子这里需要注意一下,有几个分类,就会有几个这样的_category_t 结...原创 2018-07-23 19:31:15 · 1262 阅读 · 0 评论 -
iOS Property参数
一、@property参数1、第一组内存管理特性:retain assign copy strong weak unsafe_unretained autoreleasing2、第二组读 /写特性:readwrite readonly3、第三组多线程特性:nonatomic atomic4、第四组方法名特性:setter getter二、参数作用1、第一组(r...转载 2018-07-24 14:32:04 · 729 阅读 · 1 评论 -
iOS NSString详解
一:__NSCFConstantString __NSCFString NSTaggedPointerString二:weak修饰,字符串内存管理三:NSTaggedPointerString讲解四:面试题五:__NSCFString:Toll-free bridgin桥接机制(接上面一) OC中的NSString不论是在编译时还是在运行时都做了很多...原创 2018-08-28 16:56:55 · 1220 阅读 · 0 评论 -
ios Core Foundation 框架 详解
先来说说「Core Foundation」(以下简称CF)的历史吧。当年乔布斯被自己创办的公司驱逐后,成立了「NeXT Computer」,其实做的还是老本行:卖电脑,但依旧不景气。好在NeXTSTEP系统表现还不错,亏损不至于太严重。正好此时苹果的市场份额大跌,急需一个新的操作系统,结果大家都知道了,乔布斯借此收购,重新回到了苹果。这里就牵扯到了一个问题,如何让旧有的系统(Mac OS 9)...转载 2018-09-07 14:36:14 · 3447 阅读 · 0 评论 -
iOS NSArray 、NSMutableArray原理揭露
在iOS开发中,我们在非常非常多的地方用到了数组。而关于数组,有很多需要注意和优化的细节,需要我们潜入到下面,去了解。阅读《Effective Objective-C 2.0》的原版的时候,我发现了之前没怎么注意到的一段话:In the case of NSArray, when an instance is allocated, it’s an instance of another ...转载 2018-09-13 15:56:56 · 7595 阅读 · 0 评论 -
iOS runtime 底层详解、内部原理、场景应用
前言学:位域和共用体一:isa指针--runtime之前的学习1.1:苹果应用的按位或、按位与二:类对象信息2.1:类对象信息:rw_t2.2:类对象信息:方法缓存(很关键)2.2:类对象信息:查看缓存2.3:objc_msgSend 三个阶段:消息发送、动态解析、消息转发2.4:super2.5:isKindOfClass AN...原创 2018-09-14 11:03:44 · 1326 阅读 · 0 评论 -
iOS Runloop底层详解、内部原理、结构框架
一:前言RunLoop的基本作用RunLoop对象RunLoop与线程二:Core Foundation中关于RunLoop的5个类三:RunLoop的模式及状态runloop的状态每个模式做的事情runloop model四:RunLoop的运行逻辑五:休眠的细节六:苹果用 RunLoop 实现的功能AutoreleasePool事件响应手...原创 2018-09-26 09:51:45 · 1221 阅读 · 0 评论 -
iOS GCD:队列、锁、安全解决方案
1:iOS中的常见多线程方案2:GCD的常用函数3:GCD的队列4:死锁问题5:问题 5.1:问题1: 5.2:问题2: 5.3:问题3:6:多线程的安全隐患7:(安全问题)解决方案 7.1:iOS中的线程同步方案 7.2:iOS线程同步方案性能比较 7.3:atomic ...原创 2018-09-27 19:11:11 · 2532 阅读 · 2 评论 -
iOS:性能优化
面试题:你在项目中是怎么优化内存的?优化你是从哪几方面着手?列表卡顿的原因可能有哪些?你平时是怎么优化的?遇到tableView卡顿嘛?会造成卡顿的原因大致有哪些?1:CPU和GPU2:卡顿优化 - CPU3:卡顿优化 - GPU3.1:离屏渲染4:耗电的主要来源4.1:耗电优化5:APP的启动5.1:APP的启动 - d...原创 2018-10-15 11:49:26 · 819 阅读 · 0 评论 -
iOS 内存管理:Weak、Autorelease、Copy、Tagged Pointer、Timer问题
一:面试题:1.1:CADisplayLink、NSTimer1.1.1:CADisplayLink、NSTimer循环引用1.1.2:NSProxy小问题1.1.3:GCD定时器1.2:iOS程序的内存布局1.2.1:Tagged Pointer1.3:OC对象的内存管理1.3.1:copy:1.3.2:引用计数的存储1.3.3:weak指针的原理1....原创 2018-10-09 10:48:29 · 594 阅读 · 0 评论 -
iOS 架构设计
讲讲 MVC、MVVM、MVP,以及你在项目里具体是怎么写的?你自己用过哪些设计模式?一般开始做一个项目,你的架构是如何思考的? 1:何为架构?2:MVC - Apple版3:MVC – 变种4:MVP5:MVVM6: 三层架构7: 四层架构8: 设计模式 1:何为架构?架构(Architecture) 软件开发中的设计方案...原创 2018-10-16 11:11:16 · 1267 阅读 · 0 评论 -
iOS Switch内部原理
switch特性介绍1、假设switch语句的分支比较少的时候(例如3,少于4的时候没有意义)没有必要使用此结构,相当于if。2、各个分支常量的差值较大的时候,编译器会在效率还是内存进行取舍,这个时候编译器还是会编译成类似于if,else的结构。3、在分支比较多的时候:在编译的时候会生成一个表(跳转表每个地址四个字节)。switch汇编代码案例三个及以下case1.创建工程...转载 2018-11-19 18:39:26 · 954 阅读 · 0 评论 -
iOS KVO底层详解、内部原理
kvo:key-value-observing:键值监听,可以监听某个对象属性的值#import "Person.h"@interface ViewController()@property (nonatomic, strong) Person *person;@property (nonatomic, strong) Person *person2;@end@impleme...原创 2018-07-12 20:35:55 · 531 阅读 · 0 评论 -
iOS KVC底层原理、应用场景
转载自,这篇文章很全,但是部分我有些修改KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。很多高级的iOS开发技巧都是基于K...原创 2018-07-18 23:30:43 · 4006 阅读 · 1 评论 -
iOS Weak底层详解
原文链接weak 弱引用的实现方式、weak的生命周期:具体实现方法很少有人知道weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组。更多人的人只是知道weak是弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时候自动被设置为nil。通常用于解决循环引用问题。但现在单知道这些已经不足以应对面试了,好多公司会问weak的原理。weak的原理是...转载 2018-07-24 11:08:06 · 1853 阅读 · 0 评论 -
ios-http详解
HTTP属于老话题了,在项目中我们经常需要往服务端发POST或者GET请求,但是对于HTTP的了解不应只局限于此。千里之行,始于足下。越想走的远,基本原理就应该了解的透彻全面一些,仅仅停留在使用ASIHttpRequest或者AFNetWorking传个参数发个请求的程度上是不够的。这篇文章就是带你全方面回顾一下HTTP。通过本文你能收获哪些内容:完整HTTP请求与响应包含的必转载 2017-07-23 22:25:04 · 883 阅读 · 0 评论 -
iOS程序中的内存分配 栈区堆区全局区
在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。一、内存分区 1、栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。 优点是快速高效,缺点时有限制,数据不灵活。[先进后出]栈空间分静态分配 和动态分配两种。 静态分配是编译器完成的,比如自转载 2017-06-21 10:59:29 · 664 阅读 · 0 评论 -
Objective-c常用的函数,常数变量
介绍一下Objective-c常用的函数,常数变量算术函数【算术函数】函数名说明int rand()随机数生成。(例)srand(time(nil)); //随机数初期化int val = rand()P; //0~49之间的随机数int abs(int a)整数的绝对值(例)int val转载 2017-04-24 17:52:37 · 186 阅读 · 0 评论 -
iOS -NSUserDefault详解
NSUserDefaults是什么,有什么用处对于应用来说,每个用户都有自己的独特偏好设置,而好的应用会让用户根据喜好选择合适的使用方式,把这些偏好记录在应用包的plist文件中,通过NSUserDefaults类来访问,这是NSUserDefaults的常用姿势。如果有一些设置你希望用户即使升级后还可以继续使用,比如玩游戏时得过的最高分、喜好和通知设置、主题颜色甚至一个用户头像,那么你可以使转载 2017-07-24 09:45:59 · 2581 阅读 · 0 评论 -
ios WKWebview
iOS8之后,苹果推出了WebKit这个框架,用来替换原有的UIWebView,新的控件优点多多,不一一叙述。由于一直在适配iOS7,就没有去替换,现在仍掉了iOS7,以为很简单的就替换过来了,然而在替换的过程中,却遇到了很多坑。还有一点就是原来写过一篇文章 Objective-C与JavaScript交互的那些事以为年代久远的UIWebView已经作古,可这篇文章现在依然有一定的阅读量。所以在决...转载 2018-07-16 17:26:16 · 1233 阅读 · 1 评论 -
ios 面试大全 (下)
转载https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md《招聘一个靠谱的 iOS》—参考答案(下)25. _objc_msgForward函数是做什么的,直接调用它将会发生什么?_objc_msgForward是 IMP 类型,用...转载 2018-07-10 17:22:33 · 161 阅读 · 0 评论 -
ios 关于面试题中结构体内存对齐、类内存对齐计算总结
内存对齐计算可谓是笔试题的必考题,但是如何按照计算原则算出正确答案一开始也不是很容易的事,所以专门通过例子来复习下关于结构体内存对齐的计算问题。(编译环境为vs2015)对齐原则:原则1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那...转载 2018-06-26 14:05:30 · 937 阅读 · 0 评论 -
ios 面试list
1:C++中引用和指针的区别2:自动释放池:内部结构性、整体逻辑性、autorelease的使用场景3: IM系统下如何保证该消息不丢5:dataSource和Delegate有啥区别6:struct 和 union的区别7:编译器怎么检测#import和#include导入多次的问题,第三方导入时如何设置“”和<>8:http协议30x的错误是什么?10:...原创 2018-07-18 17:54:04 · 222 阅读 · 0 评论 -
iOS NSValue
值对象(value object)概念 在面向对象的编程语言中,值对象本质上是数据元素的的对象包装器,所谓数据元素,常见的包含string,number,date类型以及其它自定义的结构体类型。Objective-C语言本身提供了string,number,date相对应的包装类,分别是NSString,NSNumber,NSDate,这些类创建的对象都可以称为值对象。但值对象本身...转载 2018-07-23 14:04:18 · 569 阅读 · 0 评论 -
iOS Isa、Superclass、类、元 -- 对象的本质、内部原理
OC对象 主要分三种:instance 对象(实例对象)class 对象(类对象)meta-class 对象 (元类对象)1:一个实例对象 在内存中存储的信息:isa指针、其他变量(这个是成员变量的值,比如说,self.age = 10, 10放在里面)2:类对象 NSObject *objec1 = [[NSObject alloc] init]; N...原创 2018-07-04 20:17:57 · 494 阅读 · 0 评论 -
ios JavaScriptCore
原文链接概览 JavaScriptCore 简介 Objective-C 与 JavaScript 交互 JavaScript 与 Objective-C 交互 内存管理 多线程 一. JavaScriptCore 简介1.1 JavaScriptCore 和 JavaScriptCore 框架首先要区分JavaScriptCore 和...转载 2018-07-17 15:27:07 · 914 阅读 · 0 评论 -
iOS - 对象的本质1、内存、内存对齐
1:oc -> c/c++ -> 汇编语言 -> 机器语言 2:OC的对象和类zh主要是基于c和c++的什么数据结构实现的?结构体才能容纳不同类型汇编语言是很依赖于硬件的 所以把oc文件转成c和c++文件时需要注意是哪个平台 window、mac、ios模拟器(i386)、32bit(armv7)、64bit(arm64) 3:指定oc类文件转成c++文件...原创 2018-06-12 21:23:38 · 1161 阅读 · 0 评论