![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS进阶
文章平均质量分 82
YLin1005
专注iOS产品开发,对互联网产品有着深刻的理解。
展开
-
iOS 编写高质量Objective-C代码(二)
这篇将从面向对象的角度分析如何提高OC的代码质量。一、理解“ 属性 ”这一概念属性(@property)是OC的一项特性。@property:编译器会自动生成实例变量和getter和setter方法。下文中,getter和setter方法合称为存取方法For Example:@property (nonatomic, strong) UIView *qiShareView;...转载 2018-09-13 16:15:53 · 252 阅读 · 0 评论 -
iOS 组件化方案探索
看了 Limboy(文章1 文章2) 和 Casa (文章) 对 iOS 组件化方案的讨论,写篇文章梳理下思路。首先我觉得”组件”在这里不太合适,因为按我理解组件是指比较小的功能块,这些组件不需要多少组件间通信,没什么依赖,也就不需要做什么其他处理,面向对象就能搞定。而这里提到的是较大粒度的业务功能,我们习惯称为”模块”。为了方便表述,下面模块和组件代表同一个意思,都是指较大粒度的业务转载 2016-09-12 13:28:07 · 233 阅读 · 0 评论 -
一个iOS 框架介绍:MKNetworkKit
原文链接:ASIHTTPRequest (作者:BenCopsey) 是一个使用简单,可用于各种从简单到复杂的 HTTP 请求,或者可用于处理 Amazon S3、Rackspace 等REST 服务的强大框架。不幸的是,Ben 早在 2011 年 9 月 21 日就已经声明停止开发和支持该框架(见http://allseeing-i.com/%5Brequest_release%转载 2014-08-06 16:41:28 · 432 阅读 · 0 评论 -
[iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端二)
原文链接:http://blog.csdn.net/kangx6/article/details/7744304接上一章的,这一章我们着重介绍XMPP为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中在AppDelegate.m下这几个方法为:[java] view plaincopy转载 2014-08-06 17:19:03 · 303 阅读 · 0 评论 -
[iPhone高级] 基于XMPP的IOS聊天客户端程序(XMPP服务器架构)
原文链接:http://blog.csdn.net/kangx6/article/details/7739828最近看了关于XMPP的框架,以文本聊天为例,需要发送的消息为:[html] view plaincopymessage type="chat" from="kang@server.com" to="test@server转载 2014-08-06 17:21:12 · 369 阅读 · 0 评论 -
[iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
原文链接:http://blog.csdn.net/kangx6/article/details/7740135介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序先看一下我们完成的效果图首先下载xmppframework这个框架,下载点ZIP下载接下来,用Xcode新建一个工程将以下这些文件拖转载 2014-08-06 17:16:49 · 285 阅读 · 0 评论 -
iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
介绍:Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用。设计:GCD的工作原理是:让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务。转载 2014-08-21 17:46:35 · 375 阅读 · 0 评论 -
智能聊天机器人实现(源码+解析)
转自:http://blog.csdn.net/hitwhylz/article/details/38462417转载 2014-09-09 17:34:13 · 2244 阅读 · 0 评论 -
在iOS中使用ZXing库
DEC 23RD, 2012前言ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0)。它不但支持众多的条码格式,而且有各种语言的实现版本,它支持的语言包括:Java, C++, C#, Objective-C, ActionScript和Ruby。我上周在iOS项目开发中使用了ZXing的扫描二维码功能。在此总结转载 2014-09-16 10:04:07 · 463 阅读 · 0 评论 -
如何使用TestFlight进行Beta测试
在2014年的苹果全球开发者大会上,苹果宣布他们把TestFlight集成进了iOS 8的开发套件中。这样做的目标是让开发人员多了一种安装Beta测试程序的方法,并使整个过程更加容易。而实际上,TestFlight作为一个Beta测试的平台,在这之前已经出现了,而且可以同时支持iOS和Android,非常方便好用。 苹果是在二月份收购了TestFlight的母公司Burstly,转载 2014-10-16 17:30:11 · 819 阅读 · 0 评论 -
Effective Objective-C Notes:GCD 实现同步锁
Effective Objective-C Notes》系列博文整理自《Effective Objective-C 2.0》本文名为《GCD 实现同步锁》,内容不止于锁。文章试图通过 GCD 同步锁的问题,尽量往外延伸扩展,以讲解更多 GCD 同步机制的内容。引语:线程安全问题如果一段代码所在的进程中有多个线程在同时运行,那么这些线程就有可能会同时运行这段代码。转载 2016-09-23 01:30:08 · 224 阅读 · 0 评论 -
iOS图形图像及核心动画实战三GCD基础知识
本教程是一个合集,涉及到的目录结构:基础知识总结Block基础知识GCD实战CoreGraphics & ImageIO实战CoreAnimation实战Grand Central Dispatch(GCD)概要Grand Central Dispatch(GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定转载 2017-03-19 22:04:40 · 282 阅读 · 0 评论 -
如何快速的开发一个完整的iOS直播app】(编解码原理)
为什么要编码编码就是压缩图像手机摄像头采集的都是一帧一帧的图片,只要每秒采集了24帧,看起来就比较流畅,视频就是由一帧一帧的图片构成的,常见图片格式png,jpg,一张图片2M,一秒钟30帧,那么1秒就是60M,这么多保存到本地是没问题,但是进行网络传输,尤其是在外网传输,每一秒传输60M,在中国是不可能达到这个带宽,那这时候就要对每一帧图象进行压缩带宽:每秒网络传输的数据,每秒10M,每秒传输1...转载 2018-03-10 14:41:31 · 615 阅读 · 0 评论 -
【如何快速的开发一个完整的iOS直播app】(礼物篇)
搭建礼物列表使用modal,设置modal样式为custom,就能做到从小往上显示礼物列表,并且能看见前面的直播界面礼物模型设计一开始创建3个礼物模型,保存到数组,传入给礼物View展示,本来礼物数据应该从服务器获取,这里没做了。到时候拿到礼物View就能拿到对应按钮,传给服务器就好了.礼物模型设计礼物模型用户模型(userID,userName),用于标志哪个用户发送,这里为方便测试,保证Use...转载 2018-03-10 14:40:35 · 1145 阅读 · 0 评论 -
如何快速的开发一个完整的iOS直播app】(点赞功能)
客户端代码点击小红心,发送socket给服务器,并且要传递房间Key给服务器,通知给哪个主播点赞,就能传入到对应的分组socket中怎么传递房间key,房间Key在主播界面,一般一个客户端,只会产生一个房间,可以记录到socket对象中业务逻辑:用户点击小红心,小红心就会往上慢慢飘。实现原理:其实就是一个动画。怎么实现:用UIView做不了,因为小红心是不规则的左右摆动,慢慢上去的。可以使用核心动...转载 2018-03-10 14:39:28 · 686 阅读 · 0 评论 -
如何快速的开发一个完整的iOS直播app】(创建房间)
直播(创建房间)1.进入主播界面,首先创建房间2.设计房间模型(key,名称),key作为房间的唯一标识,用来找到房间3.用socket创建房间,导入socket.io框架4.一般一个客户端一个socket就好了,可以搞个全局的socket5.客户端代码(需要封装) 1.一个获取全局的socket 2.一个连接方法封装6.可以在程序一启动的时候,就建立socket连接7.每次点击创建房间,直接发送...转载 2018-03-10 14:38:09 · 931 阅读 · 0 评论 -
【iOS】Category VS Extension 原理详解
(一)Category1、什么是Category?category是Objective-C 2.0之后添加的语言特性,别人口中的分类、类别其实都是指的category。category的主要作用是为已经存在的类添加方法。除此之外,apple还推荐了category的另外两个使用场景。可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处。可以减少转载 2017-05-06 01:40:57 · 334 阅读 · 0 评论 -
iOS进阶(一)block与property
这篇读书笔记主要介绍了C语言内存分配、block疑难点、property的深入理解,自己对这三块做了系统性的总结,希望对你有所帮助。C语言内存分配Objective-C从名字来看就可以知道是一门超C语言,所以了解C语言的内存模型对于理解Objective-C的内存管理有很大的帮助。C语言内存模型图如下:1-1 C内存分配.png从图中可以看出内存被分成了5个转载 2017-05-06 01:38:20 · 541 阅读 · 0 评论 -
iOS进阶(二)Objective-C底层原理
这篇读书笔记主要介绍了Objective-C底层的一些东西,比如Objective-C对象模型、objc_msgSend消息发送原理、方法混写(Method Swizzling)和ISA混写(ISA Swizzling)。Objective-C对象模型我们都知道Objective-C是一门动态性语言,这种动态性的核心是objc提供的Objective-C运行时,比如objc_msg转载 2017-05-06 00:00:01 · 729 阅读 · 0 评论 -
Self & Super
在objc中的类实现中经常看到这两个关键字”self”和”super”,以以前oop语言的经验,拿c++为例,self相当于this,super相当于调用父类的方法,这么看起来是很容易理解的。以下面的代码为例:?1234567891011121转载 2017-05-13 21:18:22 · 191 阅读 · 0 评论 -
轻松学习之 IMP指针的作用
本文转载自:http://www.cocoachina.com/ios/20150717/12623.html可能大家一直看到有许多朋友在Runtime相关文章中介绍IMP指针的概念,那么IMP究竟有什么实际作用呢?让我们先从一个函数看起来。Method Swizzling如果对Runtime有一定了解的话,一定听说过或者用过这个函数:转载 2017-04-06 18:18:19 · 245 阅读 · 0 评论 -
IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新
IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽IOS百度地图开发POISearch搜索附近停车场,附近加油站IOS百度地图视角跳到用户当前位置IOS百度地图开发实时路况IOS开发百度地图自动导航IOS开发百度地图在大头钉上加文字和图片,点击这个整体再弹出气泡IOS开发百度地图实现经纬度导航,无需地名。 第一部分--牛刀小试百度地图转载 2015-01-29 16:38:36 · 878 阅读 · 0 评论 -
iOS开发——创建你自己的Framework
(原文:How to Create a Framework for iOS 作者:Sam Davies 译者:Mr_cyz )在上一篇教程(中译版)中,你学到了怎么样创建一个可复用的圆形旋钮控件。然而你可能不清楚怎样让其他开发者更方便地去复用它。如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件。然而,这种方法并不是很优雅。它会暴露所有的实现细节,而这些实现你可能并不想转载 2015-07-31 10:56:25 · 466 阅读 · 0 评论 -
【如何快速的开发一个完整的iOS直播app】(播放篇)
前言在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇)开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦本篇主要讲解的是直播app中,需要用到的一个很重要的开源框架ijkplayer,然后集成这个框架可能对大多数初学者还是比较有难度的,所以本篇主要教你解决集成【ijkpla转载 2016-09-12 13:35:35 · 2063 阅读 · 1 评论 -
【如何快速的开发一个完整的iOS直播app】(采集篇)
前言在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇)开发一款直播app,首先需要采集主播的视频和音频,然后传入流媒体服务器,本篇主要讲解如何采集主播的视频和音频,当前可以切换前置后置摄像头和焦点光标,但是美颜功能还没做,可以看见素颜的你,后续还会有直播的其他功能文章陆续发布。如果喜欢我的文章,可以关注我微博:袁峥Seemygo,也可转载 2016-09-12 13:37:22 · 920 阅读 · 0 评论 -
最快让你上手ReactiveCocoa之基础篇
前言很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,小编看了很多篇都没看出怎么使用ReactiveCocoa,于是决定自己写一遍关于学习ReactiveCocoa的文章,本文主要针对如何从零开始学习ReactiveCocoa,这里非常感谢3个人(支点的雷纯锋,camera36转载 2016-09-12 13:53:24 · 270 阅读 · 0 评论 -
最快让你上手ReactiveCocoa之进阶篇
前言由于时间的问题,暂且只更新这么多了,后续还会持续更新本文《最快让你上手ReactiveCocoa之进阶篇》,目前只是简短的介绍了些RAC核心的一些方法,后续还需要加上MVVM+ReactiveCocoa实战开发。如果喜欢我的文章,可以关注我,微博:袁峥Seemygo,欢迎交流。也可以来小码哥,了解下我们的iOS培训课程。之后还会更新1.ReactiveCocoa常见操作方法介绍。转载 2016-09-12 13:56:26 · 368 阅读 · 0 评论 -
性能调优
在第一和第二部分,我们了解了Core Animation提供的关于绘制和动画的一些特性。Core Animation功能和性能都非常强大,但如果你对背后的原理不清楚的话也会降低效率。让它达到最优的状态是一门艺术。在这章中,我们将探究一些动画运行慢的原因,以及如何去修复这些问题。CPU VS GPU关于绘图和动画有两种处理的方式:CPU(中央处理器)和GPU(图形处理器)。在现代转载 2016-09-13 10:21:25 · 639 阅读 · 0 评论 -
iOS app性能优化的那些事(二)
这次我们来说说iOS app中滑动的那些事。iOS为了提高滑动的流畅感,特意在滑动的时候将runloop模式切换到UITrackingRunLoopMode,在这个过程中专心做跟滑动相关的工作,这也就是在滑动过程中为什么nstimer无法工作的原因,因为两个没在同一mode下面。但我们可能经常会遇到滑动不怎么流畅的情况,比如在项目中碰到在滑动tableview的时候不怎么顺畅,感觉有点不爽,即便是转载 2016-09-13 17:14:24 · 731 阅读 · 0 评论 -
iOS app性能优化的那些事(一)
iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对复杂一些,导致应用在比如touch等较低端的产品上,光从启动到进入页面就花了将近一分钟的时间,页面之间的切换没有那种很流畅的感觉,内存也居高不下,比较影响应用的用户体验,所以很有必要进行一些优化,下面记转载 2016-09-13 17:32:15 · 317 阅读 · 0 评论 -
深入理解RunLoop
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。IndexRunLoop 的概念RunLoop 与线程的关系RunLoop 对外的接口RunLoop转载 2016-09-13 17:35:33 · 211 阅读 · 0 评论 -
iOS离屏渲染优化(附DEMO)
本文授权转载,作者:seedante(简书)离屏渲染(Offscreen Render)objc.io出品的Getting Pixels onto the Screen的翻译版《绘制像素到屏幕上》应该是国内对离屏渲染这个概念推广力度最大的一篇文章了。文章里提到「直接将图层合成到帧的缓冲区中(在屏幕上)比先创建屏幕外缓冲区,然后渲染到纹理中,最后将结果渲染到帧的缓冲区中要廉价很多。因转载 2016-09-14 11:38:58 · 474 阅读 · 0 评论 -
【如何快速的开发一个完整的iOS直播app】(原理篇)
前言大半年没写博客了,但我一直关注着互联网的动向,最近会研究很多东西,并分享,今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,整理了直播的原理,当前只是原理篇,后续会持续发布实战篇,教你从零开始搭建一个完整的iOS直播app,希望能帮助到更多的人更快的了解直播。如果喜欢我的文章,可以关注我微博:袁峥S转载 2016-09-12 13:33:32 · 4917 阅读 · 1 评论 -
微信读书 iOS 性能优化总结
微信读书作为一款阅读类的新产品,目前还处于快速迭代,不断尝试的过程中,性能问题也在业务的不断累积中逐渐体现出来。最近的 1.3.0 版本发布后,关于性能问题的用户反馈逐渐增多,为此,团队开始做一些针对性的性能问题优化。本文将从发现问题、解决问题和预防问题三个方面进行总结。如何发现性能问题不同于一般的 bug,性能问题因为并没有统一的标准,而且与用户的机器环境相关性较大,所以往往转载 2016-09-12 11:58:02 · 1292 阅读 · 0 评论 -
自定义 URL Scheme 完全指南
自定义 URL Scheme 完全指南发布于:2014-05-22 10:59阅读数:22356iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用。“”阅读器自定义URL Scheme本转载 2015-08-13 23:07:41 · 476 阅读 · 0 评论 -
Xcode 6制作动态及静态Framework
有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Framework ,随着Xcode 6的发布,相信小伙伴们已经都知道了,Xcode 6支持做Framework了. 同时iOS-Universal-Framework开发者也宣布不在继续维持此项目的开发,建议开发者使用Xcode 6制作,目前网上转载 2016-01-27 18:29:59 · 321 阅读 · 0 评论 -
iOS NSMutableAttributedString/NSAttributedString 富文本设置
[plain] view plain copy//UILabel 设置NSAttributedString [plain] view plain copyNSMutableParagraphStyle *ps = [[NSMutableParagraphStyle alloc] init]; [ps转载 2016-05-26 18:59:14 · 853 阅读 · 0 评论 -
【Dev Club 分享第三期】iOS 黑客技术大揭秘
“8小时内拼工作,8小时外拼成长”这是大家共同的理想。除了每天忙于工作外,我们都希望能更多地区吸收领域内的新知识与新技能,从而走向人生巅峰。Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。上一期我们邀请了腾讯 WXG iOS 开发工程师“姚海波”分享了《微信读书 iOS性能优化》。本转载 2016-08-29 10:18:04 · 787 阅读 · 0 评论 -
iOS瘦身之按需加载资源开发指南
按需加载资源基础按需加载资源是由App Store托管的内容,它和下载的app bundle是分开的。app请求一系列按需加载资源,而下载和存储资源是由操作系统来管理。这些资源可以是除可执行代码外,bundle支持的任何类型。支持类型的完整列表,请参阅附录a:按需加载的资源类型。 按需加载资源主要可以带来以下的几种好处:初始资源的延迟加载。app有一些资源是转载 2016-09-09 15:07:13 · 1083 阅读 · 0 评论 -
ReactiveCocoa入门教程——第一部分
作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation)。但是这些事件都用不同的方式来处理,比如action、delegate、KVO、callback等。ReactiveCocoa为事件定义了一个标准接口,从而可以使用一些基本工具来更容易的连接、过滤和组合。如果你对上转载 2016-09-09 15:10:34 · 326 阅读 · 0 评论