Hello, World!

Hello, World!

UIWindow
UIWindow是最顶层的界面容器,本文将讲解它的特点及一些使用技巧。 UIWindow简介在iOS应用中,我们使用UIWindow和UIView来呈现界面。UIWindow并不包含任何默认的内容,但是它被当作UIView的容器,用于放置应用中所有的UIView。而每一个UIView通常都是用来表示具体的某一部分界面,例如一段文字、一张图片等,当然,你也可以用UIView来当作其他UIView的容器。所以UIWindow更多的时候只作为UIView的顶层容器存在。从继承关系上,我们能看到UIWindow继承自UIView,所以UIWindow除了具UIView的所有功能外,还增加了一些特...
内存管理(下)
在开始之前先思考一个问题,就是为什么需要内存管理?iOS系统会在程序退出以后,回收其所有内存,那么开发者还有必要在程序运行过程中去管理内存吗?答案是肯定的,1,程序运行的过程中,如果不去管理内存,可能会发生内存泄露,而内存泄露会导致程序运行出错甚至直接崩溃闪退。虽然有些情况下的内存泄露,并不会导致上述状况,2,严格的内存管理可以让应用更加合理、高效的使用有限的硬件条件,提高应用程序的性能。 内存泄露什么是内存泄露内存泄露指一个对象或者变量在使用完成后没有及时释放掉,一直占用着内存,直到应用停止。 哪些情况下会发生内存泄露iOS开发,不管是Objective-C语言还是Swift语言,其内...
内存管理(上)
关于iOS开发中内存管理的知识脉络,我依据自己的思路整理了一下,根据管理的是哪个区域的内存->管理的方式->内存泄露->内存警告线索来展开。具体的每个步骤里面会有更多的关联知识点,但是能力有限,写作匆忙,有瑕疵错误的地方,多多包涵。 内存分区内存区域划分程序如果想要执行,第一步就需要从磁盘加载到内存中。运行过程中内存的分区是怎样的呢,如下图所示。1,栈区(stack)由编译器自动分配并释放的变量存储区。存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点是有限制,数据不灵活。[先进后出]2,堆区(heap)由程序员申请和释放,如果...
断点下载与文件上传
本篇博文的所有网络操作的对象都是一张图片。 普通下载使用NSURLSessionDownloadTask实现。代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566@interface DownloadController ()<NSURLSessionDownloadDelegate>@endstatic NSString *const ImageURL = @"...
Sandbox机制
iOS为每个应用程序提供了一个独立的文件空间,该空间称为沙盒。应用程序与系统交互时候大多数情况都限制在自己沙盒,不可以去其它地方访问,所以非代码文件都要保存在沙盒,例如图像,图标,声音,映像,属性列表,文本文件等。 1.每个应用程序都有自己的存储空间。 2.应用程序不能翻过自己的围墙去访问别的存储空间的内容。 3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。 Sandbox结构Sandbox结构如下: 123456789Documents (iTunes同步设备时会备份该目录)Library Caches Preferences (iTunes同步设备时会备份该...
时间与日期(下)
NSDateComponentsNSDateComponents类的作用是把日期拆分成一个一个的组件。一个日期是由年月日时分秒组成的,该类可以把日期拆分成单独的年、月、日、时、分、秒。通常是和NSCalendar类一起使用。 初始化方法 - (instancetype)init 默认的初始化方法 123456789101112131415// 创建NSDateComponents对象,设置时间点NSDateComponents *components = [[NSDateComponents alloc] init];[components setEra:1]; // 时代[c...
时间与日期(上)
NSDateNSDate表示公历(阳历)的格林尼治(G.M.T.)时间。 初始化方法 - (instancetype)init 默认的初始化方法,返回当前时间,也可以直接调用+ (instancetype)date方法 12345NSDate *date = [[NSDate alloc] init];// NSDate *date = [NSDate date]; // 等同于上句NSLog(@"%@",date); log信息如下:2017-03-24 01:47:29 +0000打印的时间是格林尼治标准时间,不是我们所在的东八区时间。 - (instance...
iOS并发编程基础
并发 描述的概念是同时有多个任务在执行,这些任务在单核CPU上以分时的形式在运行(宏观上可以看成多个任务同时执行),而在多核CPU上才是真正的同时执行。在iOS开发中,Apple提供了四种**API(pthread,NSThread,GCD,NSOperation)**用于并发编程。本文以讲解四种API的使用方法为切入点,带你了解多线程的全貌。 在学习并发编程之前,首先我们要知道线程的概念,以及线程的一些相关基础知识,这是学习并发编程的基础。 什么是线程线程(thread)是进程的基本单位,一个进程包含一个或多个线程(至少包含一个),操作系统的调度器可以直接调度线程。所有的并发编程A...
在MacOS上使用Hexo+GitHub搭建个人博客
IT行业的知识体系更新迭代非常频繁,开发者需要不停的去学习新的知识新的技术,那么往往老的知识技术会遗忘的非常快,通过记录总结可以在需要的时候快速回忆起来,其次,互联网IT的精神核心是分享、共享,总结记录下来就可以分享给需要的人。所以,我需要一个可以满足我的需求的方式,个人博客就是一个非常好的方式。  通过Hexo + Github搭建的个人博客,就是一个非常好的选择。首先介绍一下Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 建站具体的建站过程,在这篇博文中不是重点,因为在网络上可以搜索到...
avatar
朱献国
努力学习👍努力工作
FRIENDS
friendA friendB