自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (2)
  • 收藏
  • 关注

原创 关于NSString的算法题目

有如下业务:富文本中带有自定义的表情图片的转义字符(哈哈我抓到你了/大笑表情,太开心了/邪恶的表情),这段字符串中“/大笑表情”及“/邪恶的表情”分别表示一个表情图片。程序中有一个表情转义字符和表情图片名称对照的json文件。现在需要实现一个算法,可以将富文本中的转义字符通过查找json文件找出来。

2016-05-23 22:46:28 4404 2

原创 block的介绍

Block对象是 C 级别的语法和运行时特性。它们和标准 C 函数很类似,但是除了可执行代码外,它们还可能包含了变量自动绑定(栈)或内存托管(堆)。所以一个block维护一个状态集(数据),它们可以在执行的时候用来影响程序行为。你可以用 blocks来编写函数表达式,这些表达式可以作为 API 使用,或可选的存储,或被多个线程使用。Blocks作为回调特别有用,因为 block

2016-05-18 23:24:40 4246

原创 C/C++中经典的垃圾回收算法

1.引用计数算法         引用计数(Reference Counting)算法是每个对象计算指向它的指针的数量,当有一个指针指向自己时计数值加1;当删除一个指向自己的指针时,计数值减1,如果计数值减为0,说明已经不存在指向该对象的指针了,所以它可以被安全的销毁了。可以很直观的用下面的图表示:        引用计数算法的优点在于内存管理的开销分布于整个应用程

2016-05-17 22:19:22 444

原创 字符编码Unicode和UTF-8

1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字

2016-05-17 22:09:00 319

原创 SPS、PPS、IDR以及NALU编码规律

【H.264编码出的NALU规律】第一帧 SPS【0 0 0 1 0x67】 PPS【0 0 0 1 0x68】 SEI【0 0 0 1 0x6】 IDR【0 0 0 1 0x65】p帧      P【0 0 0 1 0x61】I帧    SPS【0 0 0 1 0x67】 PPS【0 0 0 1 0x68】 IDR【0 0 0 1 0x65】【mp4v2封装函数MP4WriteS

2016-05-17 19:50:59 1132

原创 H.264码流打包分析

H.264码流打包分析SODB 数据比特串-->最原始的编码数据RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐。EBSP 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码 StartC

2016-05-17 19:39:43 4221

原创 H.264中的SPS、PPS提取与作用

牛逼的视频会议网站:http://wmnmtm.blog.163.com/blog/#m=0++++++++++++++++++++++++++++++++++++++++++++++++++++http://wmnmtm.blog.163.com/blog/static/38245714201192491746701/使用RTP传输H264的时候,需要用到sdp协议描述,

2016-05-17 18:59:27 849

原创 H.264码流与帧结构

参考连接:http://blog.csdn.net/dxpqxb/article/details/7631304H264以NALU(NAL unit)为单位来支持编码数据在基于分组交换技术网络中传输。NALU定义了可用于基于分组和基于比特流系统的基本格式,同时给出头信息,从而提供了视频编码和外部世界的接口。H264编码过程中的三种不同的数据形式:SODB 数据比特串

2016-05-17 18:51:57 3978

原创 H.264基础概念与RTP封包详解

一. h264基础概念1、NAL、Slice与frame意思及相互关系1 frame的数据可以分为多个slice.每个slice中的数据,在帧内预测只用到自己slice的数据, 与其他slice 数据没有依赖关系。 NAL 是用来将编码的数据进行大包的。 比如,每一个slice 数据可以放在NAL 包中。I frame 是自己独立编码,不依赖于其他frame 数据。

2016-05-17 18:43:32 421

原创 ffmpeg解码流程

FFMPEG解码流程:  1. 注册所有容器格式和CODEC: av_register_all()  2. 打开文件: av_open_input_file()  3. 从文件中提取流信息: av_find_stream_info()  4. 穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO  5. 查找对应的解码器: avcodec_find_decoder()

2016-05-17 18:12:40 3942 2

原创 ffmpeg把H264数据流解码成YUV420P

整理了一下使用ffmpeg将H264数据流解码成YUV420p的代码块:1、初始化一些参数//下面初始化h264解码库  avcodec_init();  av_register_all();    AVFrame *pFrame_ = NULL;    AVCodecContext *codec_ = avcodec_alloc_context(); 

2016-05-17 17:58:00 2828

原创 使用ffmpeg进行音频解码

搜集整理了一些使用ffmpeg进行音频解码的资料1. 注册所有解码器 av_register_all();2. Codec & CodecContext       AVCodec* codec = avcodec_find_decoder(CODEC_ID_AAC);    if (!codec)    {        fprintf(stder

2016-05-17 17:29:21 535

原创 iOS面试题集锦2

1.什么情况使用 weak 关键字,相比 assign 有什么不同? 2.怎么用 copy 关键字? 3.这个写法会出什么问题: @property (copy) NSMutableArray *array; 4.如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter? 5.@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这

2016-05-09 22:00:25 1307

原创 iOS面试题集锦

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-05-09 21:53:32 1208

翻译 Webrtc的iOS框架编译

Webrtc的ios框架编译,Webrtcios框架编译1.WebRTC的iOS框架的选择目前两个比较活跃的开源WebRTC实现.Google WebRTC:项目地址是:https://webrtc.org/native-code/ios/Ericsson Research OpenWebRTC:项目地址是: https://github.com

2016-04-22 14:35:55 387

原创 一些开发中遇到的小知识

1、统计整个Xcode工程代码行数打开终端,用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来:find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -print | xargs wc -l其中,-name 

2015-12-18 12:00:21 353

原创 iOS高阶面试题之某某音乐的面试题

近期由于工作上的变动,也进行了新一轮iOS的面试。之前面试过很多家企业,一直没有时间总结一把,今天把面试中遇到的一些经典题目列出来,答案则会稍后补充,以供大家学习:1、ARC中weak和assign区别,分别用在什么场景,weak的实现原理是什么?2、GB2312,UTF-8,UTF-16,Unicode的区别和联系,NSString内部存储用的什么编码,为什么选择这种编码?3、NSS

2015-12-15 17:23:54 548

原创 iOS开发的52个要点纪要之十

47、系统框架许多系统框架都可以直接使用,其中最重要的就是Foundation和CoreFoundation,这两个框架提供了构建应用程序所需的许多核心功能。很多常见的任务都能使用框架来做,例如音频处理、网络通信、数据管理等。用纯C写成的框架和用Objective-c写成的一样重要,成为优秀的OC开发者,应该掌握C语言的核心概念。48、多用块枚举,少用for循环遍历collec

2015-11-29 17:42:34 412

原创 iOS开发的52个要点纪要之九

41、多用派发队列,少用同步锁同步锁有@asyschronized,NSLock,NSRecursiveLovk递归锁,若是在self对象上频繁加锁,那么程序可能要等另一段与此无关的代码执行完毕,才能继续执行当前的代码,这样做并没有必要。派发队列可用来表述同步语义(synchronization semantic),这种做法要比使用@asyschronized块或NSLock对象更简单。

2015-11-29 15:23:04 294

原创 iOS开发的52个要点纪要之八

36、不要使用retainCount对象的保留计数看似有用,实则不然,因为任何给定时间点上的“绝对保留计数”(absolute retain count)都无法反应对象生命期的全貌,如未考虑系统的自动释放池的操作等等。引用ARC之后,retainCount方法就正式废止了,在ARC下调用该方法会导致编译器报错。37block的理解块 void*i

2015-11-29 14:50:38 298

原创 iOS开发的52个要点纪要之七

31、dealloc中需要做的事情在dealloc方法里,应该做的事情就是释放指向其他对象的引用,并取消原来订阅的“键值观察”或NSNotificationCenter等通知,不要做其他事情。如果对象持有文件描述符等系统资源,那么就应该专门编写一个方法来释放此种资源。这样的类要和其他使用者约定:用完资源后必须调用close方法。执行异步任务的方法不应该在dealloc里调用;只能在正常

2015-11-29 14:21:02 318

原创 iOS开发的52个要点纪要之六

26、不要在分类中定义属性把封装数据所用的全部属性都定义在主接口里。在“class-continuation分类”之外的其他分类中,可以定义存取方法,但尽量不要定义属性。

2015-11-28 16:45:03 298

原创 iOS开发的52个要点纪要之五

21、理解Objective-C错误模型@throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"must be overriden" userInfo:nil]异常只用于处理严重错误。出现不那么严重的错误时,OC语言的编程范式为:令方法返回nil/0,或者使用NSError,表明其中有错

2015-11-28 16:35:37 336

原创 iOS开发的52个要点纪要之四

16、提供“全能初始化方法”在类中提供一个全能初始化方法,并于文档里指明。其他的初始化方法均应调用此方法。如全能初始化方法与超类不同,则应覆写超类中的对应方法。如果超类的初始化方法并不适用于子类,那么应该覆写这个超类方法,并在其中抛出异常。17实现description方法实现description方法,返回一个有意义的字符串,用于描述该实例-(NSString *)des

2015-11-28 15:01:44 348

原创 iOS开发的52个要点纪要之三

11关于objc_msgSend的作用其原型为:void objc_msgSend(id self, SEL cmd,...)objc_msgSend_stret 如果待发送的消息要返回结构体,交由此函数处理;objc_msgSend_fpret 如果消息返回的是浮点数,交由此函数处理;objc_msgSendSuper 如果要给超类发消息,交由此函数处理。消息由接受者、选择子

2015-11-28 14:06:09 362

原创 iOS开发的52个要点纪要之二

6、可以用属性@property语法来定义对象中所封装的数据。通过“特质”来指定存数数据所需的正确语义。在设置属性所对应的实例变量时,一定要遵从该属性所声明的语义。开发iOS程序时应该使用nonatomic属性,因为atomic属性会严重影响性能。7、在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应通过属性来写。在初始化方法及dealloc方法中,总是应该直接

2015-11-27 13:17:48 286

原创 iOS开发的52个要点纪要之一

最近看了《编写高质量iOS与OS X代码的52个有效方法》,将本文中的精彩之处摘录出来,供大家进一步的研究

2015-11-26 14:28:39 300

swift写的音频播放的例子

AVAudioPlayer 的音频播放的界面搭建,功能实现。

2015-11-06

iOS开发GCD编程

swift写的GCD的一些小例子,有关多线程的控制、线程安全等等

2015-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除