Inside The iOS Dev
文章平均质量分 85
深入探究iOS开发中的底层和基础知识。
jasonblog
这个作者很懒,什么都没留下…
展开
-
Improve app size and runtime performance —— WWDC 2022 随记
结论先行使用Xcode14重新构建我们的App产物,可以优化2%的OC代码大小(基于messagesendstub)。将deploymenttarget设置为iOS16开始,可以再优化2%的代码大小。原创 2022-06-10 12:06:15 · 549 阅读 · 0 评论 -
iOS中线程Call Stack的捕获和解析(二)
上接iOS中线程Call Stack的捕获和解析(一)。1. 部分参考资料做这一块时也是查阅了很多链接和书籍,包括但不限于:《OS X ABI Mach-O File Format Reference》《Mach-O Programming Topics》《程序员的自我修养》——这本几年前读过的,又一次从书架上拿下来温习,主要是用来对比确认;《The Mac Hacker’s Handboo原创 2015-11-18 16:36:55 · 12980 阅读 · 3 评论 -
iOS中线程Call Stack的捕获和解析(一)
这里对上个月做的一个技术项目做部分技术小结,这篇文章描述的功能和我们在使用Xcode进行调试时点击暂停的效果类似。一、获取任意一个线程的Call Stack如果要获取当前线程的调用栈,可以直接使用现有API:[NSThread callStackSymbols]。但是并没有相关API支持获取任意线程的调用栈,所以只能自己编码实现。1. 基础结构一个线程的调用栈是什么样的呢?我的理解是应该包含当前线程原创 2015-11-18 16:35:39 · 18231 阅读 · 1 评论 -
利用objc的runtime来定位次线程中unrecognized selector sent to instance的问题
昨天我们一个只有一行错误信息的问题:-[NSNull objectForKey:]: unrecognized selector sent to instance 0x537e068由于这个问题发生在次线程,所以没有太有用的堆栈信息,而是只有简单的SIGABRT信息:考虑到unrecognized selector sent to instance这类问题是由于向某个对象发送了未实现的消息,这个过原创 2014-06-17 15:32:16 · 10036 阅读 · 1 评论 -
Inside ARC — to see the code inserted by the compiler
这里的主题是“Inside ARC”,顾名思义,主要是探讨ARC在我们看不见的地方为我们做了什么事情,以及怎么做的。出发点是对底层实现的兴趣,不了解这些也不妨碍写好代码,了解一点应该有益。原创 2014-05-23 11:12:42 · 5444 阅读 · 2 评论 -
iOS应用的crash日志的分析基础
Outline如何获得crash日志如何解析crash日志如何分析crash日志 1. iOS策略相关 2. 常见错误标识 3. 代码bug一、如何获得crash日志当一个iOS应用程序崩溃时,系统会创建一份crash日志保存在设备上。这份crash日志记录着应用程序崩溃时的信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志原创 2014-02-10 10:46:58 · 54208 阅读 · 16 评论 -
关于大数据量下Core Data的数据迁移
Core Data版本迁移基础通常,在使用Core Data的iOS App上,不同版本上的数据模型变更引发的数据迁移都是由Core Data来负责完成的。这种数据迁移模式称为Lightweight Migration(可能对于开发人员来说是lightweight),开发人员只要在添加Persistent Store时设置好对应选项,其它的就交付给Core Data来做了:原创 2014-01-04 14:52:07 · 15171 阅读 · 7 评论 -
Core Data浅谈系列汇总
Core Data浅谈系列之一 : 基础结构Core Data浅谈系列之二 : 简单的CURDCore Data浅谈系列之三 : 了解NSManagedObject和NSPredicateCore Data浅谈系列之四 : 数据模型的版本变迁Core Data浅谈系列之五 : 在UITableView中展示Core Data浅谈系列之六原创 2013-01-22 10:42:52 · 9070 阅读 · 14 评论 -
iOS中block实现的探究
[0. Brief introduction of block]Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C语言的扩展,用来实现匿名函数的特性。用维基百科的话来说,Block是Apple Inc.为C、C++以及Objective-C添加的特性,使得这些语言可以用类lambda表达式的语法来创建闭包。用Apple文档的话来说,A block is an ano原创 2012-07-17 20:23:08 · 95669 阅读 · 22 评论 -
Instruments使用小记(2012-11-28更新)
好记性不如烂笔头,所以决定写篇博客陆陆续续地记录一些使用Instruments的技巧。1. 内存泄露的检测。Memory Leak是编码过程中最基本的一类问题,即请求了内存分配,却没有归还给操作系统。使用Instrument可以帮助我们进行内存泄露的检测,不过先想想,如果要我们来检测内存泄露,会怎么做呢?一种最直接的方法就是通过遍历构造一张堆上的内存分配、引用图,检测每一块内存原创 2012-06-10 19:51:37 · 12816 阅读 · 0 评论 -
C语言中闭包的探究及比较
这是一篇技术分享,并且之前发表在酷壳上,http://coolshell.cn/articles/8309.html,现在发布到自己的博客上。下文是直接从酷客复制过来的,这里偷了个懒,没有再次对格式做很仔细的整理,只有稍微整理。汗。这里主要讨论的是C语言的扩展特性block。该特性是Apple为C、C++、Objective-C增加的扩展,让这些语言可以用类Lambda表达式的原创 2012-10-16 15:09:48 · 23831 阅读 · 3 评论 -
autorelease探究
有时候我们需要延迟一个对象的引用计数减一操作,比如:+ (NSArray *)array{ return [[NSArray alloc] init] autorelease];}由于方法名并不以alloc, new, copy, mutableCopy开头,并且方法内部使用了alloc,需要对因此产生的引用计数负责。不过如果直接调用release,将会返回野指针,原创 2012-08-15 12:04:03 · 5590 阅读 · 0 评论 -
在iOS上实现瀑布流界面
前阵子需要做一个需求,在iPhone上实现瀑布流效果。第一眼看到这个需求,我想到的两种解决方案分别是:1. 使用多个UITableView,然后控制它们同时滚动; 2. 使用一个UIScrollView,然后参考UITableView的实现自己做一个符合需求并且以后可以重用的控件。我首先尝试了第一个方案,并且Google过控制多个UITableView同时滚动的代码,在St原创 2012-05-21 20:16:18 · 13459 阅读 · 5 评论 -
使用UIImageView展现来自网络的图片
在iOS开发过程中,经常会遇到使用UIImageView展现来自网络的图片的情况,最简单的做法如下:- (void)viewDidLoad{ [super viewDidLoad]; self.imageView = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)] autorelease原创 2012-03-14 13:06:01 · 33647 阅读 · 19 评论 -
What's the methodLists attribute of the structure objc_class for?
在stackoverflow上看到这个问题,刚好那时候也在看相关内容,同有疑惑。不过后来一时没理清,暂时先搁置了下来。今天早上,同事突然问起了这个问题,所以又跟了一下。具体过程直接用英文写。I'm now using Xcode 4, and the declaration of struct objc_class is as following:struct objc原创 2012-02-28 20:34:35 · 3696 阅读 · 0 评论 -
iOS开发中的对象系统基础
[0] Outline -- [1] id和Class -- [2] 动态地操作类 -- [3] 实例化[1] id和Class在Objective-C中有一个特别的数据类型作为对象标识符:id,可以指向任何类型的对象。通过 “可以指向任何类型的对象” 这一描述,猜想id实际上是指向Objective-C对象系统中的基类(继承体系中的祖先结构)的指针,在运行时原创 2012-02-17 16:32:25 · 8026 阅读 · 0 评论 -
Runtime of Objective-C
[0] Outline -- [1] 版本和平台 -- [2] 与Runtime System交互 -- [3] 方法的动态决议 -- [4] 消息转发 -- [5] 类型编码 -- [6] 属性声明[1] 版本和平台Runtime System对于Objective-C来说就好比是它的操作系统,或者说是运行的支撑平台,它原创 2012-02-09 21:37:02 · 14690 阅读 · 4 评论