iOS开发(Objective-C)
文章平均质量分 81
zyx196
jp007
展开
-
iOS BLE开发关键步骤
要想APP在后台长时间运行,可以用蓝牙模式在info.plist中添加“Required background modes”属性,并在该属性下添加两个item,“App communicates using CoreBluetooth”和“App communicates using CoreBluetooth”,这样就能实现长时间后台运行了。 一、中心扫描周边1、创建中心原创 2015-10-28 16:04:45 · 1847 阅读 · 0 评论 -
dyld: Dynamic Linking On OS X
https://www.mikeash.com/pyblog/friday-qa-2012-11-09-dyld-dynamic-linking-on-os-x.htmlIn the course of a recent job interview, I had an opportunity to study some of the internals ofdyld, the OS X d转载 2016-03-07 16:32:43 · 957 阅读 · 0 评论 -
在非越狱手机上进行App Hook
http://drops.wooyun.org/papers/128030x00 序冰指的是用户态,火指的是内核态。如何突破像冰箱一样的用户态沙盒最终到达并控制如火焰一般燃烧的内核就是《iOS冰与火之歌》这一系列文章将要讲述的内容。但在讲主线剧情前,我们今天先聊一聊分支剧情 - 在非越狱的iOS上进行App Hook。利用这个技术,你可以在非越狱的iOS系统上实现各种hoo转载 2016-03-07 17:10:48 · 2942 阅读 · 0 评论 -
深入理解Runloop
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。目录RunLoop 的概念RunLoop 与线程的关系RunLoop 对转载 2016-03-08 11:28:21 · 555 阅读 · 0 评论 -
Objective-C的AutoreleasePool与Runloop的关联
注释AutoreleasePool的源码在runtime/NSObject.mm中可以找到。相信很多人都知道,autorelease就是让对象延迟释放,很多人还更具体的以为是在出了作用域释放,也有的说是出了作用域后某个时间点,但是具体是在啥时候呢,也不清楚。那具体如何呢,我们还是要到源码里才能一探究竟:我们先新建一个项目,并跟踪一个对象的内存情况,我们可以看到如下截图内容,在o原创 2016-03-08 11:30:55 · 676 阅读 · 0 评论 -
漫谈iOS程序的证书和签名机制
接触iOS开发半年,曾经也被这个主题坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务,有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕和崇拜。于是,花了一点时间去研究了一下iOS这套证书和签名机制,并撰文分享给需要的朋友。由于本人才疏学浅,多有遗漏或错误之处,还请大神多多指教。非对称加密和摘要非对称加密的特性和用法非对称加密算法可能是世界上最重要转载 2016-03-11 17:23:01 · 694 阅读 · 1 评论 -
针对苹果最新审核要求为应用兼容IPv6
针对苹果最新审核要求为应用兼容IPv6在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务。2016年初开始所有提交到App Store的应用必须支持IPv6。为确保现有的应用是兼容的,我们需要注意下面几点。不建议使用底层的网络API下图展示的蓝色部分的这些API都是不存在兼容性问题的,而我们平时自己用的包括那些第三方的网络库大部分都是用的这些API。转载 2016-05-13 10:05:45 · 741 阅读 · 0 评论 -
iOS UIScrollView滚动时导航栏背景渐变
要实现这个功能需要达到: 1. 监听UIScrollView的contentOffset.y值的变化; 2. UINavigationBar半透明,ScrollView全屏; 3. 动态设置UINavigationBar的背景图片; 4. 隐藏导航栏下的那条黑线;下面我们进行各个击破:如何监听scrollView的滚动这里我们可以实现scrollView的delegate方法:-(void)原创 2016-12-01 22:19:42 · 3610 阅读 · 0 评论 -
64-bit Tips
终究还是来了。Apple下发了支持64位的最后通牒:As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June转载 2017-05-17 21:54:36 · 319 阅读 · 0 评论 -
__attribute__的妙用整理
1、如果想限制方法里必须调用用父类方法 __attribute__((objc_requires_super));NS_REQUIRES_SUPER2、如果想不可继承:__attribute__((objc_subclassing_restricted))@interface Eunuch : NSObject@end@interface Child转载 2017-05-18 16:15:28 · 398 阅读 · 0 评论 -
深入理解Runloop(补充)
看完ibreme写的深入理解Runloop(这里),确实非常详细,描述了Runloop概念、原理及主要几个运用库。这里我再结合几个与Runloop相关的API进行进一步的说明,更方便大家理解:1、run相关:- run- runMode:beforeDate:- runUntilDate:在深入理解Runloop中原创 2016-03-18 10:55:31 · 946 阅读 · 0 评论 -
别说你会AFNetworking3.0/NSURLSession
很多时候,AFNetworking都是目前iOS开发者网络库中的不二选择。Github上2W+的star数足见其流行程度。而从iOS7.0开始,苹果推出了新的网络库继承者NSURLSession后,AFNetworking也毫不犹豫地加入了对其的支持。3.0+更加只是提供了NSURLSession的支持。 我们使用AFNetworking的时候,可能会有很多的朋友都会采用以下的写法:转载 2017-06-26 16:07:47 · 468 阅读 · 0 评论 -
Cocopods提交自己库及坑
一、先安装Cocoapods这有一篇介绍如何安装POD二、注册Cocoapods账号1、注册:打开终端,输入 pod trunk register email 'nickname' --verbose例:pod trunk register zyx196@163.com ‘gyor zou’ –verbose这里nickname是必须的, 否则会报错 2、打开Safary,到邮箱去点击激活链接原创 2017-08-23 18:59:09 · 571 阅读 · 2 评论 -
Objective-C的Category与关联对象实现原理
1、什么是Categorycategory是Objective-C 2.0之后添加的语言特性,category的主要作用是为已经存在的类添加方法。除此之外,apple还推荐了category的另外两个使用场景1可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处,a)可以减少单个文件的体积 b)可以把不同的功能组织到不同的category里 c)可以由多个开发者共同完原创 2016-03-07 16:14:34 · 1484 阅读 · 2 评论 -
UIKit性能调优实战讲解
作者:bestswifter在使用UIKit的过程中,性能优化是永恒的话题。很多人都看过分析优化滑动性能的文章,但其中不少文章只介绍了优化方法却对背后的原理避而不谈,或者是晦涩难懂而且读者缺乏实践体验的机会。不妨思考一下下面的问题自己是否有一个清晰的认识:为什么要把控件尽量设置成不透明的,如果是透明的会有什么影响,如何检测这种影响?为什么cell中的图片,尽可能要使用正确的转载 2016-03-16 16:48:12 · 487 阅读 · 0 评论 -
CGImageSource的用法
导入ImageIO.framework#import 1.创建CGImageSourceRef12NSString *imagePath=[[NSBundlebundleForClass:self.class]pathForImageResource:@"test.png"];CGImageSou原创 2015-10-28 16:08:58 · 5835 阅读 · 0 评论 -
CoreText实现气泡图文混排
CoreText实现图文混排的原理大概是:通过attributedString拼接,设置string的各段(不是段落,是每个被拼接的子串)的属性,其中图片部分可以用“ ”来拼接,并设置代理回调,这个代理回调就会咨询图片的宽高,然后CT就会预留对应空间,最后,你只需要把对应图片绘制在对应的位置即可。 对应的位置,这说来就是另外一个难搞的问题了,接下来我们就来细说一下: Core原创 2015-10-28 16:07:39 · 673 阅读 · 0 评论 -
iOS无限滚动,实现ios原生日历
在分解完UI后,我们应该就是对功能得到分配,功能分配的原则一般是面向对象的思想,自己的事情自己做,自己很难做的找代理或其他第三方做!因此,我们得出一个初步框架:1、滚动视图:FlowCalendarView,负责实现无限滚动,加载所需月份视图;2、月份视图:MonthView,负责根据日期生成对应的天视图,并布局天视图及附属视图;3、日视图:DayView,负责生成对应的点击事件、ui显示等;原创 2015-10-28 15:56:45 · 4808 阅读 · 3 评论 -
iOS 类簇及越界处理
估计做iOS开发的朋友都遇到多一个问题,就是数组越界,-[__NSArray0 objectAtIndex:]: index 1 beyond bounds for empty NSArray'-[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'-[__NSArrayM objectAtInd原创 2015-10-29 16:15:44 · 4134 阅读 · 1 评论 -
iBeacon开发基础
(迁移自我的qq日志:http://user.qzone.qq.com/511107989/blog/1401877946)端午放假的时候,张老师@张诚 跟我说起一个词,iBeacon,说来惭愧,虽然一直做蓝牙相关的APP,但在此之前是完全没听过这个概念,虽然iBeacon是Location和Ble的结合体,但也算是直亲了吧,又想起了WWDC2014上新发布的开发语言Swift,突然感觉尝试去原创 2015-11-18 11:35:07 · 908 阅读 · 0 评论 -
iOS的property相关修饰符
iOS的property相关修饰符你如果参加过面试,80%的可能性会被问到过,@property的修饰符有哪些,区别又是什么;既然想深入的了解我们就要知道它的来龙去脉,首先,我们的得知道什么是property。PropertyOC中称为属性,采用此属性,编译器会自动帮我们合成一个变量以及setter、getter方法,比如:@property NSString * name;则系统会默认帮我们合成原创 2015-11-18 23:20:04 · 1366 阅读 · 0 评论 -
[翻译]Obejective-C的类加载与初始化
作为一个iOS程序员,你一般情况下并不需要关心类是如何加载到内存里的。这是一个复杂的过程,由运行时处理的,并早于你的代码运行。 对于大部分的类,你只需要知道如何使用即可,但是有些时候,你要做一些特殊的处理,比如一个某个类想创建一个全局的表,用来加载本地的用户数据或则其他一些任务。 Objective-C运行时采用两种方式来实现这个需求:+initialize和+load。+loa翻译 2015-11-25 18:34:24 · 706 阅读 · 0 评论 -
iOS下的__block与__weak
先看下结论: 所有对象在编译之后,都会转换成一个结构体,包括block,和被__block修饰的任意变量,形成一个拷贝(你可以用clang 将oc转c即可验证)。被__block修饰的变量,转换后的结构体里包含一个_forwarding指针,指向自己的拷贝(从栈到堆的拷贝)。因此: __block id weakS=[MyViewController new]; //假设这里的指针原创 2015-11-26 11:20:18 · 607 阅读 · 0 评论 -
iOS ble关键开发步骤
(很久前写在QQ空间里,也许这个plist设置已经换了)要想APP在后台长时间运行,可以用蓝牙模式在info.plist中添加“Required background modes”属性,并在该属性下添加两个item,“App communicates using CoreBluetooth”和“App communicates using CoreBluet原创 2015-12-18 17:31:52 · 576 阅读 · 1 评论 -
iOS APP可执行文件的组成
iOS APP编译后,除了一些资源文件,剩下的就是一个可执行文件,有时候项目大了,引入的库多了,可执行文件很大,想知道这个可执行文件的构成是怎样,里面的内容都是些什么,哪些库占用空间较高,可以用以下方法勘察:1.XCode开启编译选项Write Link Map FileXCode -> Project -> Build Settings -> 搜map -> 把Write Link转载 2016-03-01 11:21:03 · 492 阅读 · 0 评论 -
Objective-C Class 、 MetaClass、实例 详解
如果用过运行时做过一些实现,对下面的代码你应该不会陌生:Class newClass =objc_allocateClassPair([NSError class], "RuntimeErrorSubclass", 0);//1class_addMethod(newClass, @selector(report), (IMP)ReportFunction, "v@:");//2objc_原创 2016-03-02 16:39:46 · 1556 阅读 · 0 评论 -
app无法上传,Failed to locate or generate matching signing assets,Missing or invalid signature 处理
今年过年回来,上传一个APP到store,却怎么也不行,报错如下:看到这里,觉得是不是证书不匹配,导致的问题,那打开钥匙串,找到证书,发现:按照一贯的解题思路,找baidu,谷歌,stackflow,终于找到原因:http://stackoverflow.com/questions/32821189/xcode-7-error-missing-ios原创 2016-02-17 09:34:05 · 683 阅读 · 0 评论 -
Cocoapods的使用
1、查看ruby版本ruby -v2、如果需要更新,用rvm进行ruby更新#列出已知版本,会有提示ruby list known #安装更新,例如 1.x.x版本ruby inistall 1.x.x 3、更新gemgem update --system4、安装cocoapodssudo gem inistall cocoapodspod setup下面就是日常pod使用了5、cd 项原创 2017-05-10 15:17:15 · 435 阅读 · 0 评论