ios开发
文章平均质量分 72
hanmingsa
这个作者很懒,什么都没留下…
展开
-
iOS开发-Runtime详解(简书)(好文章)
简介Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。比如:[receiver message];// 底层运行时会被编译器转化为:objc_msgSend(receiver, selector)// 如果其还有参数比如:[receiver message:(id)arg...];// 底转载 2016-11-01 11:04:26 · 1086 阅读 · 0 评论 -
KVO底层实现原理
KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相对的objects会被通知到。在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用,这是怎么实现的呢?其实就是通过OC强大的运行时(runtime)实现的。当你第一次观察某个对象时,runtime会创建一个新的继承原先class的subclass。在这个新的转载 2015-07-21 15:49:03 · 585 阅读 · 0 评论 -
GCD研究
d深入理解 GCD(一)GCD 深入理解:第二部分GCD是基于c的底层api,NSOperation属于object-c类。ios 首先引入的是NSOperation,IOS4之后引入了GCD和NSOperationQueue并且其内部是用gcd实现的。NSOperation:1,NSOperation拥有更多的函数可用,具体查看api。2,在NSOpe转载 2015-07-21 15:23:48 · 360 阅读 · 0 评论 -
IOS面经系列(二)什么是id ,为什么要用id,在哪用id
谁能告诉我以下这三种声明的区别? 1. id b1; 2. NSObject *b2; 3. id b3;第一种,id类型是运行时的动态类型,仅声明了指向对象的指针,没给编译器任何类型信息,因此,编译器不会做类型检查。由于编译器无法知道它的真实类型,即使你发送一个id类型没有的方法,也不会产生编译警告。因此你可以发送任何信息给id类型的对象(但很危险)。转载 2015-07-15 22:51:45 · 557 阅读 · 0 评论 -
Objective-C 中 +load 与 +initialize
类的加载在java语言里,可以通过如下代码来实现加载类的时候执行对类的操作,一般叫:类初始块,或者,类加载块。比如: Java代码 public class MyClass{ static{ …… } } 在objc语言里,对应的机制是,2个类初始化方法,+(void)load和+(void)i转载 2015-06-16 13:56:42 · 221 阅读 · 0 评论 -
iOS后台任务
根据苹果文档中关于后台执行的描述,任何app都有10分钟左右的后台任务执行时间。 10分钟后,app会被iOS强行挂起。但是,有5类app允许有“无限的”后台运行时间:1. Audio。2. Location/GPS。3. VoIP。4. Newsstand。5. Exernal Accessory 。你可以将任何app声明为上述5种类型以获得无限的后台运行时转载 2015-01-22 12:17:14 · 518 阅读 · 0 评论 -
viewDidUnload和dealloc的执行时机
一直对这个没有什么问题,反正就是疯狂的release。但今天发现原来模拟器可以模拟内存不足时的情况,这使我的程序发生了一些错误,同时也让我对这两家伙了解更多。viewDidUnload 这个只在内存不足时执行,而且是对所有非当前显示的controller执行。你可以通过模拟器执行:硬件》模拟内存警告 来触发。 当己经执行 viewDidUnload的controller重新显示转载 2015-04-28 11:09:52 · 304 阅读 · 0 评论 -
appstore中关于idfa的选项都是什么意思
最近,好多同学向我们反映,使用了umtrack产品,在appstore提交应用时,审核会被拒。关于这个问题,我想,需要详细地给大家说一说,以便提升大家提交应用的效率。首先,说下umtrack会采集的信息。umtrack会采集用户的idfa、idfv、mac以及ip等信息。那么问题来了,如果你的应用中,没有集成广告,而你又不太清楚这一点的话,你可能会在提交应用时,选择自己的应用未采集转载 2015-04-05 16:33:24 · 824 阅读 · 0 评论 -
iOS分辨率的那些事儿
ddd1 iOS设备的分辨率iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类iPhone/iPod Touch普屏分辨率 320像素 x 480像素Retina分辨率 640像素 x 960像素iPad,iPad2/New iPad普屏 768像素 x 1024像素Retina屏 1536像素 x 204转载 2014-11-18 19:15:37 · 529 阅读 · 0 评论 -
ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
iphone中图像通常存储在4个地方【相册、应用程序包、沙盒、Internet】,通过这4个源,我们就可以存取应用图片。 相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片。用户可以通过UIImagePickerController类提供的交互对话框来从相册中选择图像。但是,注意:相册中的图片机器路径无法直接从应用程序访问,只能通过终端用户去选择和使用相册图片 应用转载 2015-03-17 18:50:34 · 327 阅读 · 0 评论 -
25条提高iOS App性能的建议和技巧
当我们开发iOS应用时,好的性能对我们的App来说是很重要的。你的用户也希望如此,但是如果你的app表现的反应迟钝或者很慢就会让你得到不好的评论。 然而,由于IOS设备的限制有时很难工作得很正确。我们开发时有很多需要我们记住这些容易忘记的决定对性能的影响。 这是为什么我写这篇文章的原因。这篇文章用备忘录的形式集合了25个技巧和诀窍可以用来提高你的app性能。所以耐心的阅转载 2015-03-17 18:36:45 · 358 阅读 · 0 评论 -
iOS重绘机制drawRect
iOS的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写drawRect方法,在这里进行绘图操作,程序会自动调用此方法进行绘图。下面先说明一下绘图,比如,你想绘制一个方块,你需要写一个类来扩展UIView并在drawRect方法中填入如下代码:- (void)drawRect:(CGRect)r转载 2015-01-20 16:17:43 · 444 阅读 · 0 评论 -
iOS8 Core Location
DD当肾Phone出现,定位服务一直都是作为一个前沿技术跟中心存在。CL API在肾平台SDK第一次发布的时候就列入了公开接口。在每次新发布的iOS版本中,大苹果总是循序渐进的增加一些新功能到CL框架,比如后台定位,geocoding亦或是iBeacons。iOS8义无反顾往前走。更其他领域的最新更新一样,CL已经动摇了,随着新设计允许让开发去创建之前他们无法完成的新东西的同时还帮助保转载 2014-12-24 00:29:54 · 646 阅读 · 0 评论 -
iOS地图上WGS84、GCJ-02、BD-09互转解决方案
近来开发的项目涉及地图位置分享模块,android组的同事先开工,用的是百度地图sdk,本人后面开工,用的是iOS SDK的mapkit做,之后问题来了,同一个经纬度坐标在iOS端和Android端出现了比较大偏差。查了下资料苹果地图在大陆的数据源是高德的,查了下高德采用GCJ-02, 百度map sdk 采用的是BD-09,只好写了个类在发送和接收时做好转换,略微蛋疼。Github上有人写了转载 2014-12-22 17:32:24 · 1890 阅读 · 0 评论 -
ios 高德地图 通过索引输出经纬度 根据经纬度 定位
ios 高德地图 通过索引输出经纬度 根据经纬度 定位,有需要的朋友可以参考下。ios 高德地图新出了几个方法,实现地理位置的编码用到了CLGeocoder,CLGeocoder里面一共就下面这几种方法://根据location即经纬度输出具体地址- (void)reverseGeocodeLocation:(CLLocation *)location comple转载 2014-12-22 18:49:16 · 4012 阅读 · 0 评论 -
How to get md5 and SHA1 in objective c (iOS sdk)
Calculating the md5 and sha1 hash in iOS sdk is pretty simple -Step 1 – The very first thing you need to do is import CommonCrypto’s CommonDigest.h#import Step 2 – Here is the real code for cal转载 2015-08-18 11:21:39 · 572 阅读 · 0 评论 -
iOS应用架构分享及讨论
源自一篇文章http://casatwy.com/iosying-yong-jia-gou-tan-kai-pian.html,该文章是一系列的,大家可以多看几遍以及看看评论,受益匪浅转载 2015-10-09 12:00:20 · 306 阅读 · 0 评论 -
使用 iOS 8 Spring Animation API 创建动画
在iOS9 中,如果进行animateWithDuration 时,view被release 那么会引起crash。[UIView animateWithDuration:0.25f animations:^{ self.frame = selfFrame; } completion:^(BOOL finished) { if (finished转载 2016-09-26 18:38:08 · 369 阅读 · 0 评论 -
iOS 启动连续闪退保护方案
引言“如果某个实体表现出以下任何一种特性,它就具备自主性:自我修复、自我保护、自我维护、对目标的自我控制、自我改进。” —— 凯文·凯利 iOS App 有时可能遇到启动必 crash 的绝境:每次打开 App 都闪退,无法正常使用App。为了尝试解决这个问题,微信读书开发了 iOS 连续闪退保护工具:GYBootingProtection,检测连续闪退,在连续闪退出现时,尝试转载 2016-08-18 18:14:06 · 725 阅读 · 0 评论 -
iOS 视图,动画渲染机制探究
在第一和第二部分,我们了解了Core Animation提供的关于绘制和动画的一些特性。Core Animation功能和性能都非常强大,但如果你对背后的原理不清楚的话也会降低效率。让它达到最优的状态是一门艺术。在这章中,我们将探究一些动画运行慢的原因,以及如何去修复这些问题。CPU VS GPU关于绘图和动画有两种处理的方式:CPU(中央处理器)和GPU(图形处理器)。在现代iOS设备中转载 2016-03-07 15:41:45 · 958 阅读 · 0 评论 -
书架卡顿问题引发的显示类知识梳理&性能检测
1. 问题描述百度阅读 iOS 版书架在宫格、列表模式下进行快速滑动均感觉到明显卡顿,当书架中全部为图书\小说时滑动较流畅,但生成文件夹后卡顿加强。2. iOS 显示原理Vsync是什么?CPU\GPU协同方式?V-Sync 机制是什么?双缓冲工作原理?垂直同步工作原理?掉帧卡顿是如何产生的?避免复制粘贴,上面的这些问题可以从下面这篇文章找到答案:ibireme:如何让转载 2016-06-12 18:24:24 · 1574 阅读 · 0 评论 -
Objective-C Associated Objects 的实现原理
我们知道,在 Objective-C 中可以通过 Category 给一个现有的类添加属性,但是却不能添加实例变量,这似乎成为了 Objective-C 的一个明显短板。然而值得庆幸的是,我们可以通过 Associated Objects 来弥补这一不足。本文将结合runtime 源码深入探究 Objective-C 中 Associated Objects 的实现原理。在阅读本文转载 2016-04-20 16:21:15 · 232 阅读 · 0 评论 -
iOS 保持界面流畅的技巧(好文章)
点多这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消耗原因和解决方案GPU 资源消耗原因和解决方案AsyncDisplayKitASDK 的由来ASDK 的资料ASDK 的基转载 2015-11-15 22:30:42 · 580 阅读 · 0 评论 -
runloop实现原理初解 和 使用runloop阻塞线程
现在说说runloop为何会成为cocoa开发中迷惑的点。因为很多新手没有从动态角度看它。 首先回想一下第2点介绍的runtime的概念。 接着我出一个题思考一下。 现在我有一个程序片段如下: 复制代码- (void)myThread:(id)sender{ NSAutoreleasePool *pool=[[NSAutoreleasePool allo转载 2014-10-07 16:29:39 · 1241 阅读 · 0 评论 -
如何更安全的使用Block
前段时间,在公司的项目中发现了内存泄露。查到最后发现是由于没有正确使用Block导致的内存引用循环。简单的解决方案就是补上关键字__weak。那么问题来了,为何[UIView animateWithDuration:animations:completion:]或者GCD中可以不需要声明__weak呢?如何选择回调方式在讲这个问题之前,我们先看看Objcio上是怎么判断使用何种回调转载 2015-07-17 10:11:05 · 257 阅读 · 0 评论 -
iOS开发,入门级ReactiveCocoa教程(二)
ddReactiveCocoa是一个框架,它能让你在iOS应用中使用函数响应式编程(FRP)技术。在本系列教程的第一部分中,你学到了如何将标准的动作与事件处理逻辑替换为发送事件流的信号。你还学到了如何转换、分割和聚合这些信号。 在本系列教程的第二部分,你将会学到一些ReactiveCocoa的高级功能,包括:•另外两个事件类型:error 和 completed转载 2015-12-27 12:28:10 · 347 阅读 · 0 评论 -
ReactiveCocoa入门教程:第一部分
作为一个iOS开发者,你写的每一行代码几乎都是在相应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation)。但是这些事件都用不同的方式来处理,比如action、delegate、KVO、callback等。ReactiveCocoa为事件定义了一个标准接口,从而可以使用一些基本工具来更容易的连接、过滤和组合。如果你对上面说的还比较转载 2015-12-27 12:26:33 · 578 阅读 · 0 评论 -
使用CocoaPods进行第三方资源管理(新机配置)
s转载 2014-11-15 10:26:19 · 624 阅读 · 0 评论 -
IOS使用Jenkins进行持续集成
前提:jenkins之所以能自动打包是因为xcode带有xcodebuild 和xcrun这两个插件命令。1.下载安装jenkins mac 下用homebrew下载最方便 brew install jenkins (没有homebrew的请安装,可用brew --version 来查看是那个版本和是否已经安装)。2.启动jenkins ,网上的资料都是 java -jar jen原创 2016-01-04 19:57:26 · 587 阅读 · 0 评论 -
iOS 上基于js的monkey的测试
https://github.com/vigossjjj/CrashMonkey4IOS转载 2015-12-16 13:17:07 · 376 阅读 · 0 评论 -
Launch Arguments & Environment Variables
Walk into any American fast food establishment, and you’ll be greeted with a colorful, back-lit display of specials, set menus, and other a la carte items. But as those in-the-know are quick to point转载 2015-12-30 16:09:31 · 482 阅读 · 0 评论 -
xcodebuild和xcrun的打包
通过一翻搜索和学习,打包这事儿就是让xcrun来干,而xcodebuild只是xrun的一个软链接,但是这一链却有了不同的分工:xcodebuild负责将工程源文件编译成xxx.appxcrun负责给xxx.app(签名并)打包成xxx.ipa先说我是咋干的。第一步清理:/usr/bin/xcodebuild -target targetName clean转载 2015-11-15 21:59:00 · 1488 阅读 · 0 评论 -
关于UITableView 设置contentsize
由于UITableView是继承自UIScrollView的,所以他是可以设置contentsize的。但是,我在试验的过程中,初始化UITableView实例后,直接设置它的contentsize是不起作用,在搜寻相关资料得知,UITableView会自动设置contentsize,因为我们在建立tableview的时候是不用自己去设置contentsize的,她是自己计算出来的。转载 2015-01-30 16:48:32 · 943 阅读 · 1 评论 -
IOS开发之 ---- IOS8推送消息注册
iOS8拥有了全新的通知中心,有全新的通知机制。当屏幕顶部收到推送时只需要往下拉,就能看到快速操作界面,并不需要进入该应用才能操作。在锁屏界面,对于推送项目也可以快速处理。基本上就是让用户尽量在不离开当前页面的前提下处理推送信息,再次提高处理效率。 能够进行直接互动的短信、邮件、日历、提醒,第三方应用,可以让你不用进入程序就能进行快捷操作,并专注于手中正在做的事情。 在通知横转载 2014-12-18 17:26:34 · 394 阅读 · 0 评论 -
IOS 制作静态库及注意事项
第一种方法:直接新建一个工程,具体操作请参照博客 http://blog.csdn.net/pjk1129/article/details/7255163 原作者写得非常详细,在此谢过。第二种方法:在原有工程上操作,打开已存在的工程,然后添加一个要做成.a静态库的 Target在此,简单命名为mylibrary制作静态库及注意事项" style="margin:0px; paddi转载 2014-11-14 14:37:06 · 751 阅读 · 0 评论 -
.xcconfig file in XCode
1.When you can use a .xcconfig file?Use .xcconfig files if you find yourself changing the same build settings for each project you create. Place the build settings you're changing in the .xcconf转载 2014-11-14 12:32:51 · 387 阅读 · 0 评论 -
【翻译】ios教程-创建静态库
ddd转载 2014-11-14 14:48:05 · 1264 阅读 · 0 评论 -
统计Crash的工具Crashlytics
转自:http://www.infoq.com/cn/articles/crashlytics-crash-statistics-tools简介Crashlytic 成立于2011年,是专门为移动应用开者发提供的保存和分析应用崩溃信息的工具。Crashlytics的使用者包括:支付工具Paypal, 点评应用Yelp, 照片分享应用Path, 团购应用GroupOn等移动应转载 2014-11-15 09:48:46 · 427 阅读 · 0 评论 -
iOS block 陷阱解析
二,block 注意事项1,block 在实现时就会对它引用到的它所在方法中定义的栈变量进行一次只读拷贝,然后在 block 块内使用该只读拷贝。如下代码:- (void)testAccessVariable{ NSInteger outsideVariable = 10; //__block NSInteger outsideVariable = 1转载 2014-09-29 18:26:13 · 461 阅读 · 0 评论 -
LLVM每日谈之七 Clang
官方介绍Clang是LLVM native的一个面向C/C++/Objective-C的编译器,目标是要提供一个编译非常快的编译器。他们宣称在Debug模式下编译Objective-C比GCC快3倍。至于是否能比GCC快这么多,总有人去做对比,大家可以搜索下,好像确实快了些。Clang一般被说是LLVM的一个前端。关于前端的定义,大家可以从LLVM每日谈之二里面看到前端在整个LLVM体系中的位转载 2014-09-21 11:48:47 · 1060 阅读 · 0 评论