
iOS开发
踏实做好每件小事
如果你有一天忘记了努力,我会给你讲kobe的故事。
个人博客 http://leejunhui.com
公众号 iOSDaily
展开
-
iOS 底层探索 - KVC
一、KVC 初探Key Value Coding 也即 KVC 是 iOS 开发中一个很重要的概念,中文翻译过来是 键值编码 ,关于这个概念的具体定义可以在 Apple 的官方文档处找到。Key-value coding is a mechanism enabled by the NSKeyValueCoding informal protocol that objects adopt to...原创 2020-02-28 16:29:47 · 395 阅读 · 0 评论 -
iOS 底层探索 - 类拓展和关联对象
前面我们探索了 iOS 中类和分类的加载,关于类这一块的内容,我们还有一些坑没有填,比如类拓展和关联对象,今天让我们一起填下这块的坑。一、类拓展1.1 什么是类拓展?关于类拓展的具体定义,大家可以直接参考 Apple 对于类拓展的说明。A class extension bears some similarity to a category, but it can only be add...原创 2020-02-26 15:01:18 · 262 阅读 · 0 评论 -
iOS 底层探索 - 分类的加载
一、初探懒加载类上一章我们探索了 iOS 中类的加载,让我们简单回顾一下大概的流程。1.1 类的加载回顾libObjc 向 dyld 注册了回调 _dyld_objc_notify_register,当 dyld 把 App 以及 App 所依赖的一系列 Mach-O 镜像加载到当前 App 被分配的内存空间之后,dyld 会通过 _dyld_objc_notify_mapped 也就...原创 2020-02-25 17:22:23 · 389 阅读 · 0 评论 -
iOS 底层探索 - 类的加载
一、应用加载回顾上一章我们对应用的加载有了初步的认识,我们知道了系统调用 exec() 会我们的应用映射到新的地址空间然后通过 dyld 进行加载、链接、初始化主程序和主程序所依赖的各种动态库最后在 initializeMainExecutable 方法中经过一系列初始化调用 notifySingle 函数,该函数会执行一个 load_images 的回调然后在 doModinit...原创 2020-02-25 17:21:16 · 557 阅读 · 0 评论 -
iOS 底层探索 - 应用加载
App 从被用户在主屏幕上点击之后就开启了它的生命周期,那么在这之中,究竟发生了什么呢?让我们从 App 启动开始探索。在探索之前,我们需要熟悉一些前导知识点。一、前导知识以下参考自 WWDC 2016 Optimizing App Startup Time :1.1 Mach-OMach-O is a bunch of file types for different run ...原创 2020-02-25 17:18:05 · 566 阅读 · 0 评论 -
iOS 底层探索 - 消息转发
一、动态方法解析流程分析我们在上一章《消息查找》分析到了动态方法解析,为了更好的掌握具体的流程,我们接下来直接进行源码追踪。我们先来到 _class_resolveMethod 方法,该方法源码如下:void _class_resolveMethod(Class cls, SEL sel, id inst){ if (! cls->isMetaClass()) { ...原创 2020-02-25 17:14:24 · 282 阅读 · 0 评论 -
iOS 底层探索 - 消息查找
一、objc_msgSend 汇编补充我们知道,之所以使用汇编来实现 objc_msgSend 有两个原因:因为 C 无法通过写一个函数来保留未知的参数并且跳转到一个任意的函数指针。objc_msgSend 必须足够快。1.1 objc_msgSend 流程ENTRY _objc_msgSend对消息接收者进行判断、处理 (id self, sel _cmd)taggedP...原创 2020-02-25 17:10:44 · 231 阅读 · 0 评论 -
iOS 底层探索 - 方法
我们在前面探索了对象和类的底层原理,接下来我们要探索一下方法的本质,而在探索之前,我们先简单过一遍 Runtime 的知识点,如果读者对这块内容已经很熟悉了的话可以直接跳过第一章。PS: 由于笔者对汇编暂时还是摸索的阶段,关于汇编源码的部分如有错误,欢迎指正。一、Runtime 简介众所周知,Objective-C 是一门动态语言,而承载整个 OC 动态特性的就是 Runtime。关于...原创 2020-02-25 17:09:34 · 277 阅读 · 0 评论 -
iOS 底层探索 - cache_t
上一篇我们一起探索了 iOS 类的底层原理,其中比较重要的四个属性我们都简单的过了一遍,我们接下来要重点探索第三个属性 cache_t,对于这个属性,我们可以学习到苹果对于缓存的设计与理解,同时也会接触到消息发送相关的知识。一、探索 cache_t1.1 cache_t 基本结构我们还是先过一遍 OC 中类的结构:struct objc_class : objc_object { ...原创 2020-02-25 17:08:11 · 357 阅读 · 0 评论 -
iOS 底层探索 - 类
我们在前面探索了 iOS 中的对象原理,面向对象编程中有一句名言:万物皆对象那么对象又是从哪来的呢?有过面向对象编程基础的同学肯定都知道是类派生出对象的,那么今天我们就一起来探索一下类的底层原理吧。一、iOS 中的类到底是什么?我们在日常开发中大多数情况都是从 NSObject 这个基类来派生出我们需要的类。那么在 OC 底层,我们的类 Class 到底被编译成什么样子了呢?我们新...原创 2020-02-25 17:06:43 · 287 阅读 · 0 评论 -
iOS 底层探索 - calloc 和 isa
上一篇文章主要我们探索了 iOS 对象的 alloc 和 init 以及对象是怎么开辟内存以及初始化的,如果在对象身上增加一些属性,是否会影响内存开辟呢?还有一个遗留问题就是通过 calloc ,我们的对象有了内存地址,但是对象结构里面的 isa 是怎么关联到我们的对象的内存地址的呢。一、calloc 底层探索在探索 calloc 底层前,我们先补充一下内存对齐相关的知识点。1.1 ...原创 2020-02-25 17:00:36 · 289 阅读 · 0 评论 -
iOS 底层探索 - alloc & init
alloc & init 探索作为 iOS 开发者,我们每天打交道最多的应该就是对象了,从面向对象设计的角度来说,对象的创建以及初始化是最基础的内容。那么,今天我们就一起来探索一下 iOS 中最常用的 alloc 和 init 的底层是怎么实现的吧。一、 如何进行底层探索对于第三方开源框架来说,我们去剖析内部原理和细节是有一定的方法和套路可以掌握的。而对于 iOS 底层,特...原创 2020-02-25 16:58:23 · 400 阅读 · 0 评论 -
[译] Alamofire Tutorial: Getting Started
[译] Alamofire Tutorial: Getting Started转载请注明出处:http://leejunhui.com/2017/01/23/Alamofire-Tutorial/ 本文翻译自Raywenderlich的Alamofire Tutorial: Getting Started注:已更新到Alamofire 4, Xcode 8.2, iOS 10以及Swift 3翻译 2017-01-23 15:42:11 · 531 阅读 · 0 评论 -
iOS7极限编程 第一部分 第二章 世界是扁平化的:新的UI范式 (译)
iOS7给你带来了清新的UI界面。iOS7UI上的改变是iOS历史上最为重大的。iOS7的三大特性Clarity 清楚,明晰,透明Deference 顺从,尊重Depth 深度, 层次感深入理解这些特性是很重要的,因为这可以使你的app达到和系统的app同样水准的UI效果Clarity, Deference and DepthClarity 简单来说就是对用户更加清新。大多数用翻译 2015-09-26 23:56:41 · 556 阅读 · 0 评论 -
单例模式的实现(ARC与非ARC)
单例模式是一种很重要的设计模式,在iOS开发中,通过使用单例设计模式来实现在程序生命周期内只有一个实例存在来节省内存开销。下面是ARC中单例模式的实现代码:在自定义的类.m文件中,需要实现下列的方法#import"HMAudioTool.h"@interfaceHMAudioTool()@end@implementationHMAudioTool//原创 2015-04-12 21:09:12 · 513 阅读 · 0 评论 -
Objective-C语法系列(一)
类的声明 在.h文件中 @interface 类名 : NSObject @end类的实现 在.m文件中 @implementation 类名 @end 方法的声明与实现 +:表示类方法 (静态方法) -:表示对象方法(动态方法)成员变量的作用域有三种原创 2013-11-06 15:40:33 · 625 阅读 · 0 评论 -
iOS简单计算器
本人新手一枚,算法很挫,望大神指导一番//// SimpleCaculatorViewController.h// SimpleCaculator//// Created by LI Junui on 14-2-12.// Copyright (c) 2014年 LEE JUNHUI. All rights reserved.//#import @interface原创 2014-02-12 20:14:39 · 1404 阅读 · 0 评论 -
iOS文档-UIView的基本属性
注:以下内容为本人根据苹果官方文档加上自己的理解写成。UIView#苹果官方文档对UIView(UIViewGeometry)的描述如下: // animatable. do not use frame if view is transformed //since it will not correctly reflect the actual location of the原创 2014-02-14 21:57:02 · 806 阅读 · 0 评论 -
UIScrollView 滚动视图—IOS开发
文章出处:http://blog.youkuaiyun.com/iukeyUIScrollView 类负责所有基于 UIKit 的滚动操作。一、创建[java] view plaincopyprint?CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; U转载 2014-03-22 20:40:25 · 689 阅读 · 0 评论 -
iOS开发笔记 --iOS7 API 对sizeWithFont的替代方法
NSDictionary *attribute = [NSDictionarydictionaryWithObjectsAndKeys:[UIFontsystemFontOfSize:15],NSFontAttributeName,nil]; CGSize contentSize = [_weibo.contentboundingRectWithSize:CGSizeMa原创 2014-06-11 11:29:15 · 979 阅读 · 0 评论 -
iOS开发 -- UITableView 完整知识点总结(一)
苹果官方文档:原创 2014-06-11 11:59:36 · 2105 阅读 · 0 评论 -
如何在push一个视图控制器时隐藏掉自定义的TabBar
这个问题困扰了我很久很久了,今天找到了一个解决方法,废话不多说,直接上代码!原创 2014-09-04 21:00:33 · 643 阅读 · 0 评论 -
iOS笔记--如何修改状态栏的颜色及文字颜色
由于最近做项目,需要使界面上的状态栏wen z原创 2014-08-27 22:57:40 · 834 阅读 · 0 评论 -
iOS笔记--如何获取当前设备信息
这个还是比较简单的系统API调用。。。原创 2014-08-29 15:13:57 · 528 阅读 · 0 评论 -
iOS笔记 -- 模拟器与真机在数据存储上的细节区别
一般来说,在iOS中,数据持久化有四种方法。原创 2014-09-04 14:45:49 · 861 阅读 · 0 评论 -
UIPopoverController初探
最近开始学习iPad开发,接触到了许多新知识。与iPhone上的学习一样,我还是从Apple的官方文档开始看,遇到的第一个比较有代表性的就是UIPopoverController了。今天就来总结一下它的相关要点吧。(下面的引用内容均出自Apple官方文档)The UIPopoverController class is used to manage the presentation o原创 2015-04-12 12:01:46 · 489 阅读 · 0 评论 -
iOS学习路线图
转载 2013-11-06 11:06:04 · 640 阅读 · 0 评论