随笔分类 -  客户端

摘要:符号化,顾名思义,就是把地址翻译成人能看懂的符号以及它们在文件中的位置,符号包括函数名和变量名等等。 1、什么地方有符号? 1)App Mach-O格式的二进制文件 2)DWARF(Debugging With Attributed Record Formats)格式的dSYM文件 2、工程的相关配 阅读全文
posted @ 2018-11-13 19:50 happyyoung 阅读(395) 评论(0) 推荐(0)
摘要:通知 阅读全文
posted @ 2018-11-10 15:05 happyyoung 阅读(97) 评论(0) 推荐(0)
摘要:Core Animation(核心动画),是从Layer Kit(图层工具包)演变而来的,不仅仅可以用来做动画。 1、视图 一个视图就是屏幕上显示的一个矩形,例如文字、图片和视频。 视图是UIView(NSView)或者其子类,它可以响应鼠标点击和触摸手势等用户操作,可以支持基于Core Graph 阅读全文
posted @ 2018-11-07 10:04 happyyoung 阅读(255) 评论(0) 推荐(0)
摘要:1、苹果官方说明: 从实践的角度来说,iOS和OSX中的IBOutlet应该定义为属性(即编译器自动生成getter和setter)。 IBOutlet通常是用weak来修饰,除非它是File's Owner的直接属性。 weak 避免循环引用 参考链接: https://developer.app 阅读全文
posted @ 2018-10-18 16:05 happyyoung 阅读(425) 评论(0) 推荐(0)
摘要:LLDB 阅读全文
posted @ 2018-10-09 16:19 happyyoung 阅读(812) 评论(0) 推荐(0)
摘要:Collection was mutated while being enumerated 阅读全文
posted @ 2018-09-28 15:12 happyyoung 阅读(92) 评论(0) 推荐(0)
摘要:当用NSMenu创建一个右键菜单时,mac系统会默认插入一些服务(services)菜单项,如下图,xlsx文件的右键菜单中,除了自定义的菜单项:“转发”和“收藏”等等,还有“在 Finder中显示简介”等系统菜单项。 而有时我们并不需要这些系统菜单项,可以通过添加如下代码来实现: 效果如下图: 阅读全文
posted @ 2018-09-24 19:44 happyyoung 阅读(331) 评论(0) 推荐(0)
摘要:Objective-C中用的最多的设计模式就是单例,它最常见的实现如下: 单例,顾名思义,即有且只有一个实例。那么创建函数(sharedInstance)被多次调用,以及多线程场景下,如何保证这一点?这里充分利用了static的特性,static变量只会被初始化一次,之后的函数调用会使用变量上一次的 阅读全文
posted @ 2018-09-07 11:17 happyyoung 阅读(456) 评论(0) 推荐(0)
摘要:JavaScriptCore没有禁,因为各种小程序都在用 网络下载文件没有禁 阅读全文
posted @ 2018-09-03 16:38 happyyoung 阅读(127) 评论(0) 推荐(0)
摘要:一个Objective-C对象通常分配在堆上,并有一个或者多个指针指向它。如下代码及其关系图所示: NSObject *obj1 = [[NSObject alloc] init]; NSObject *obj2 = obj1; 所谓浅拷贝与深拷贝,需要分为非容器类(如NSString)与容器类(如 阅读全文
posted @ 2018-09-02 09:32 happyyoung 阅读(277) 评论(0) 推荐(0)
摘要:一、热补丁的本质 对于线上紧急的bug,重新提审AppStore的时间过长。因此,能够下发一段补丁代码到线上运行,并结合Runtime,实时改变App原有的行为,就显得极为重要。补丁代码的形式可以有很多种,比如文本形式的JS脚本,还有二进制形式的动态库。只要能执行即可,借助系统的原生能力或者外部引入 阅读全文
posted @ 2018-08-23 19:44 happyyoung 阅读(238) 评论(0) 推荐(0)
摘要:KVO(Key Value Observing,键值观察),是Objective-C观察者模式的实现。当被观察对象的某个属性发生变化时,观察对象就会收到通知。 实现原理: 1)在运行期,为被观察对象的类xxx动态创建一个子类,名为NSKVONotifying_xxx 2)在子类NSKVONotify 阅读全文
posted @ 2018-07-05 22:06 happyyoung 阅读(249) 评论(0) 推荐(0)
摘要:@synchronized是线程同步锁,易用、可读性高。 @synchronized(self) { 临界区 } 利用如下命令将其重写 clang -rewrite-objc file 得到C++实现 { id _sync_obj = (id)self; objc_sync_enter(_sync_ 阅读全文
posted @ 2018-06-17 22:06 happyyoung 阅读(1069) 评论(1) 推荐(0)
摘要:main函数是我们所熟知的程序入口,Java、Python、C++等,虽语法各异,但皆是如此。然而,程序真正的起点并非main函数,在此之前,就已经干了很多事情。 1、在main函数打个断点,从调用栈可以看到,是动态库dyld(dylib即dynamic library)里的start方法调了mai 阅读全文
posted @ 2018-06-02 18:33 happyyoung 阅读(176) 评论(0) 推荐(0)
摘要:initialize和load 阅读全文
posted @ 2018-06-02 16:28 happyyoung 阅读(93) 评论(0) 推荐(0)
摘要:NSTimer,即计时器,用于定时执行一些任务,一次或者多次。 系统Foundation框架提供的最常用方法如下,创建一个NSTimer,并将它放到当前runloop的default mode中。 1、怎么保证在未来某个时间点,要执行任务时,target还有效呢?target完全有可能被释放了呀。鉴 阅读全文
posted @ 2018-05-08 20:46 happyyoung 阅读(391) 评论(0) 推荐(0)
摘要:一、引言 Objective-C总是尽可能把事情从编译时期和链接时期,推迟到运行时期(Runtime)来动态执行。这就意味着Objective-C不仅需要编译器,还需要一套runtime system来执行编译后的代码。 二、与Runtime交互 苹果提供了三种方式与Runtime进行交互: 1、O 阅读全文
posted @ 2018-02-28 20:59 happyyoung 阅读(199) 评论(0) 推荐(0)
摘要:Objective-C内存管理使用的技术是引用计数(Reference Counting)。从开始的MRC(Manual),到后来的ARC(Automatic)。 使用ARC的好处: 1)程序员无需再写retain和release代码,很大程度上减少了开发工作量。 2)系统比程序员清楚对象什么时候该 阅读全文
posted @ 2018-02-24 20:16 happyyoung 阅读(121) 评论(0) 推荐(0)
摘要:1、代码计算UI控件的frame,很简单的布局就需要大量的计算,标注稿改动经常“牵一发而动全身” 2、Autoresizing,只能控制父子控件之间的相对布局 3、Auto Layout,不局限于父子控件,可以设置更多约束,例如上下左右外边距 屏幕适配 阅读全文
posted @ 2018-02-24 19:23 happyyoung 阅读(121) 评论(0) 推荐(0)
摘要:iOS AOP面向切面编程 阅读全文
posted @ 2018-02-05 19:55 happyyoung 阅读(115) 评论(0) 推荐(0)