自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SunSatan的博客

一专多能、刻意练习、终身学习

  • 博客(118)
  • 资源 (4)
  • 收藏
  • 关注

转载 程序员必备的技能矩阵图​​​​​​​

转载自:程序员必备的技能矩阵图原文:https://sijinjoseph.com/programmer-competency-matrix/ 声明:本文为CSDN翻译,转载请注明来源出处。作者 |Sijin Joseph译者 | 弯月,责编 | 屠敏出品 | CSDN(ID:CSDNnews)作为程序员,你应该了解的计算机科学、软件工程、编程、开发等相关的知识汇总。请注意,各...

2019-08-15 14:19:31 857

转载 6 个工作中休息小技巧,让你工作效率翻倍!

本文转载自:Google 都在用的 6 个休息小技巧,让你工作效率翻倍一、 大脑工作久了为什么要休息:为了恢复注意力和意志力大家应该都有感受,工作久了会累,思想走神,效率就会降低。研究表明,大脑工作时,它最需要花费的两个资源是意志力和注意力,随着工作时间的增加,你的意志力和注意力都在慢慢减退,这时候就需要用休息来恢复。大概每个人都有过这种经历,自己在高度集中做事一段时间后,...

2019-05-30 16:55:24 1058

原创 iOS Objective-C 编程规范

目录前言命名规范注释规范#define规范全局常量宏(不推荐使用)私有常量宏(不推荐使用)类函数宏#pragma mark规范#import规范类规范@Interface规范常量规范协议规范变量规范@property规范@implementation规范方法规范Initializer和dealloc规范Designated...

2019-02-24 19:48:32 381

原创 iOS底层原理计划-内存分配和初始化

当我们有一个继承 NSObject 的 Person 类:@interface Person : NSObject@property (nonatomic, copy) NSString *name;@end问题一:当我们对实例对象只 alloc 未 init ,能否直接给其成员变量进行赋值?Person *person = [Person alloc];person.name = @"SunSatan";问题二:person1 和 person2 有区别吗?Person *person

2020-08-18 14:58:46 521

原创 iOS开发-事件的传递链和响应链

前言当我们点击屏幕的时候,就产生了一个点击事件,那程序是如何知道这个点击事件应该由谁来处理?响应者在iOS中,能够响应事件的就是响应者,而所有响应者都是UIResponser的子类,例如:UIView、UIButton、UIControl、UIWindow、UIViewController、AppDelegate、UIApplication以及它们的子类。UIResponder声明了各种点击事件的处理,比如点击,按压,移动等。响应链响应链就是响应者都连接一起的一个链条的层级关系,说是链条其实更类

2020-08-03 18:47:42 1510 1

原创 App Store审核规则指南!

前言对比多个厂家的安卓商店,苹果App Store的审核规则那是一个相当的严格。只要是打过交道的同学都知道,苹果的审核规则完全就是一个“黑盒”,虽然苹果给出了明确的App Store 审核指南,但是实际审核过程遇到的问题要比规则里面多的多,并且都很奇葩。因此,App在上线之前一定需要多次测试,并且熟知App Store审核规则,确保没有任何问题才提交审核,否则一次次的修改和提交,也是一件麻烦事,还耽误时间。苹果审核流程概要首先要了解苹果审核机制,苹果审核会有两个过程,先是机器审核(主要扫描代码),

2020-08-01 03:03:02 2016 1

原创 App Store审核规则简要汇总

App Store审核规则简要汇总提交之前会发生崩溃、存在错误的 app 会被拒绝。app 信息及元数据不完整、不正确的 app 会被拒绝。及时更新有效联系信息。提供审核有效的帐户和密码,以及所需的任何其他硬件或资源。开启服务器,确保 app 在审核时可以使用。在 App Review 备注中附上与非明显功能及 app 内购买项目相关的详细说明,包括支持文稿 。app 还必须遵循了其他相关指南:开发指南、设计指南、品牌和营销指南。未适配暗黑模式的 app 会被拒绝。1、安全App

2020-08-01 02:50:53 5096

原创 iOS开发-常用数据类型字节数

前言项目Value电脑$1600手机$12导管$1Column 1Column 2centered 文本居中right-aligned 文本居右

2020-07-28 01:53:09 1141

原创 iOS开发-内存字节对齐原理

内存字节对齐现象我们首先通过两个结构体来观察iOS的内存字节对齐的现象。struct StructOne { char a; //1字节 double b; //8字节 int c; //4字节 short d; //2字节} MyStructOne;struct StructTwo { double b; //8字节 int c; //4字节 shor

2020-07-27 03:20:38 786

原创 简析二进制补码原理:补码 = 反码 + 1?

前言在计算机系统中,规定数值一律用补码来表示和存储。因为使用补码可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。很多人很好奇为什么要使用补码表示和存储?直接使用原码表示多好,看上去更加直观和易于计算。那么,为什么计算机使用补码比原码更好,又是如何通过补码来计算数值的呢?这其中的原理是什么?什么是补码?补码的定义:正数的补码与原码相同。负数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)再+1,即为负数的反码+1。要了解补码首先要了解“模”,模是补码的基础,“

2020-07-26 02:57:02 6004 4

原创 iOS开发-位运算基础

前言现代计算机只有0/1状态,计算机中所有的数据按照具体的编码格式以二进制的形式存储在设备中。直接操作这些二进制数据的位数据就是位运算,位运算是一种极为高效乃至可以说最为高效的计算方式,虽然现代程序开发中编译器已经为我们做了大量的优化,但是理解并合理的使用位运算可以提高代码的可读性以及执行效率。原码原码规定数值最高位为符号位,正数符号位为0,负数符号位为1(0有两种表示:+0和-0),其余位表示数值的大小。例如,11的原码为00001011,-11的原码就是10001011。原码不能

2020-07-23 02:43:10 1274

原创 iOS开发-展示系统所有字体

#import "ViewController.h"#import "OneViewController.h"#import "SSTTimer.h"@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>@property (nonatomic, strong) NSArray *fo...

2020-04-09 23:45:16 425

原创 iOS开发-Status Bar设置汇总

Status bar 状态栏的隐藏1. Info.plist 设置状态栏的全局隐藏在Info.plist中添加Status bar is initially hidden设置为YES,隐藏LunchScreen(启动界面)的状态栏。在 Info.plist中添加 View controller-based status bar appearance 设置为 NO,隐藏...

2020-04-09 17:54:26 1498

原创 iOS开发-NSString类簇探究

前言在 Objective-C 的 Fondation 框架中 NSString 对象是很复杂的存在,使用了抽象工厂模式,NSString其实是多个类簇的抽象类,不同的创建方式以及不同的字符长度都可能影响最终得到的类簇类型,今天就来研究一下NSString 下复杂的类簇。为了观察 NSString 的内存管理情况,选择关闭 ARC 使用 MRC 来进行测试,以观察其引用计数等状况。...

2020-04-08 23:29:25 637

原创 解决XCode一直indexing或者编译卡住的问题

XCode 有时会莫名一直卡在 indexing 的阶段,或者编译到某个阶段就卡住不动,导致项目无法编译运行。这有可能写的代码导致的,但大部分情况都是因为XCode的工程索引损坏,或者是Xcode的缓存出了问题。可以在终端执行下面的命令快速清除XCode的缓存:rm -frd ~/Library/Caches/com.apple.dt.Xcode/*rm -frd ~/Librar...

2020-04-07 16:19:39 8740

原创 iOS开发-日期转换那些事 NSDateFormatter

NSDate 和 NSString 之间的相互转换是平常常用的方法,应用场景非常多。NSDate和NSString之间的相互转换需要使用NSDateFormatter,NSDateFormatter提供了stringFromDate和dateFromString这两个方法,让我们进行转换。NSDateFormatter转换格式年y 年份不带前导零(2009、2019) yy 显示...

2020-03-07 00:08:41 952

原创 iOS开发-iPhone屏幕尺寸以及状态、导航和标签栏高度整理

手机型号 屏幕尺寸 屏幕密度 开发尺寸 像素尺寸 倍图 状态栏高(pt) 导航栏高(pt) 标签栏高(pt) XR/11 6.1 inch 326 ppi 414*896 pt 828*1792 px @2x 44 44 49 XS Max/11 Pro Max 6.5 inch 4...

2020-03-05 14:52:54 3988

原创 iOS开发-info访问权限配置

前言iOS 10以后,苹果增强了对用户隐私的保护,访问照相机、相册、麦克风、定位、通讯录等,都需要在info.plist 文件中添加权限,而且少一个都不行。可以根据项目需要添加,项目中使用了权限,就添加对应的权限。但最好都先全部添加进去,这样不管用了什么都不会出问题,反正放着不亏,用了血赚。权限Privacy - Bluetooth Peripheral Usage Descr...

2019-12-22 16:12:57 1231

原创 iOS开发-常用的数学方法

1、三角函数double sin(double); 正弦double cos(double); 余弦double tan(double); 正切2、反三角函数double asin(double); 反正弦,结果介于[-PI/2, PI/2]double acos(double); 反余弦,结果介于[0, PI]double atan(double); 反正切(主值...

2019-12-18 11:18:45 676

原创 iOS开发-获取文件的MIMEType

有时候我们需要获取文件的MIMEType的信息,比如向服务器上传文件资源时需要将文件资源类型传给服务器,这样就可以判断文件是图片还是音视频,下面就介绍关于获取MIMEType的方法:- (NSString *)fileMIMETypeURLSessionWithPath:(NSString*)path { //1.确定请求路径 NSURL *url = [NSURL file...

2019-12-16 18:13:50 940

原创 iOS开发-调用系统邮箱 MFMailComposeViewController

在APP中发送邮件是一个很普遍的应用场景,譬如将用户反馈的邮件发送到指定邮箱,就可以通过在APP中直接编辑邮件或者打开iOS自带的Mail来实现。一般使用 MFMailComposeViewController在我们自己的APP中展现一个邮件编辑页面,这样发送邮件就不需要离开当前的APP。前提是系统中的Mail要设置了账户,或者iCloud设置了邮件账户才能使用。首先要导入系统库:...

2019-12-16 16:55:10 2162

原创 iOS开发-dispatch_time_t

dispatch_time_t 的定义:typedef uint64_t dispatch_time_t;/**描述:时间的抽象表示;DISPATCH_TIME_NOW(0)表示“现在”DISPATCH_TIME_FOREVER(~0)表示“无穷大”两者之间的每个值都是不透明的编码。*/dispatch_time_t 的创建:dispatch_time_t dis...

2019-12-16 15:16:00 1164

原创 iOS开发-dispatch_semaphore(信号量)

前言假设,现在系统有两个空闲资源可以被利用,但同一时间却有三个线程要进行访问,这种情况下,该如何处理呢?或者我们需要并发异步下载很多资源,每次下载都可能会开辟一个线程,线程一多就会影响cpu,那么我们就可以用信号量控制一下最大开辟线程数。简单来说就是使用信号量来控制并发。信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待。信号量函数1、创建信号量:...

2019-11-30 19:32:04 527

原创 iOS开发-block异步实现return

模拟block异步:- (NSString *)blockReturn { __block NSString *str = @"sst"; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ str = @"SunSatan"; }); ...

2019-11-30 19:31:24 1556

原创 iOS开发-复制UIView(包括它的所有属性)

在某些效果中,我们需要在当前视图上创建一个新的、一样的视图,并且叠在老的上面,然后让新的视图移动、缩放,或什么的,这样做出来的动画看起来比较流畅。对于简单的界面,我们可能按原有的样子重写一个新的就好,但对于复杂的界面,有没有更好更通用的办法呢?UIView无法通过copy来创建一个新副本,这个大家都已经试过了。而UIView是遵守NSCoding协议的,这样它才能从Xib中反序列化出来...

2019-11-25 18:04:35 1384 1

原创 iOS开发-防止UIButton重复点击

前言在iOS开发中,有几个实际业务场景需要控制UIButton响应事件的时间间隔:当点击按钮后会执行网络请求时,若请求耗时稍长,用户往往会再点一次。这样,就执行了两次请求,造成了资源浪费。 当移动终端性能较差时,连续点击按钮会执行多次事件(比如 push 出来多个viewController)。 防止用户暴力点击,不停的点击。方案控制 UIButton 响应事件时间间隔的方案...

2019-11-13 00:21:49 306

原创 睡眠的一场革命!-读《睡眠革命》笔记(下)

这是一篇读《睡眠革命》的读书笔记,融入了我个人的一些理解,并记下了书中比较重要的内容。胎儿的睡姿和体型一样,人有三种基本的睡姿:俯卧、仰卧、侧卧,对此我们都很熟悉。当然,这三种睡姿并非是彼此完全排斥的,三种睡姿之间的界限是模糊的。仰卧是一种常见的睡姿,这一睡姿的好处是:能让你的肩背保持直线型(前提是你没有靠在破坏这一直线型的枕头上),但这一睡姿会让我们的喉部肌肉过于放松,导致呼吸道阻塞...

2019-11-13 00:18:54 708

原创 睡眠的一场革命!-读《睡眠革命》笔记(中)

这是一篇读《睡眠革命》的读书笔记,融入了我个人的一些理解,并记下了书中比较重要的内容。R90睡眠法“R90”指的是以90分钟为一个周期,获得身体修复。“90”这个数字,并不是从1~100中随意选择的。从临床上说,90分钟是一个人经历完所有睡眠阶段所需的时间,也就是一个睡眠周期。我们的睡眠周期由4个不同的睡眠阶段组成,可以把完成一个睡眠周期的过程,想象成一个走下楼梯的过程。当我们...

2019-11-13 00:18:45 953

原创 睡眠的一场革命!-读《睡眠革命》笔记(上)

这是一篇读《睡眠革命》的读书笔记,融入了我个人的一些理解,并记下了书中比较重要的内容。你知道昼夜节律吗?昼夜节律是生命体二十四小时的内循环,受我们的内置生物钟的管理。我们大脑中的这一生物钟,二十四小时调节着我们的多个内部系统,包括睡眠和饮食习惯、激素的分泌、体温、灵敏度、情绪和消化,使其与地球的自转相一致。我们的生物钟是根据一些外部线索而设定的,其中最主要的是日光,此外还包括温度、...

2019-11-13 00:18:33 853 1

原创 iOS开发-UIButton使用block响应点击事件

前言为什么要给UIButton添加block点击事件,要放弃Action-Target的方式?首先第一个是因为懒,写Action-Target要比写block多写好多代码,还要想一个好一点的方法名,起名什么的最困难啦。其次是能最快最直观地看到UIButton要做什么事情。添加方法为了兼容性和拓展性,所以使用category给UIButton添加了一个属性和两个Block方法。...

2019-10-04 02:30:56 1162

原创 iOS开发-layoutSubviews、setNeedsLayout、layoutIfNeeded的爱恨情仇

iOS 中 UIKit 为 UIView 提供了这些方法来进行视图的更新与重绘://更新方法- (void)setNeedsLayout;- (void)layoutIfNeeded;- (void)layoutSubviews;//重绘方法- (void)drawRect:(CGRect)rect;- (void)setNeedsDisplay;- (void)se...

2019-10-02 00:29:29 985 1

原创 iOS开发-深入理解Tagged Pointer

引言苹果为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对于 64 位程序,引入 Tagged Pointer 后,相关逻辑能减少一半的内存占用,以及 3 倍的访问速度提升,100 倍的创建、销毁速度提升。本文从Tagged Pointer试图解决的问题入手,理解Tagged Pointer的实现细节和优势,以及使用时的注意事项。问题我们先看看原有的对象为什么...

2019-09-24 00:02:13 756

转载 iOS开发-Scale to Fill、Aspect Fit、Aspect Fill的区别

Scale:拉伸图片Aspect:图片长宽的比例,保持图形的长宽比,保持图片不变形。Aspect Fill:在保持长宽比的前提下,缩放图片,使图片充满容器。Aspect Fit:在保持长宽比的前提下,缩放图片,使得图片在容器内完整显示出来。Scale to Fill:缩放图片,使图片充满容器。图片未必保持长宽比例协调,有可能会拉伸至变形。下图是网上下载的用来说明几个属性的含义:...

2019-09-19 10:59:58 2607

原创 iOS开发-NSTimer探究

NSTimer 的使用1、NSTimer 的创建我们经常会使用下面四种常用的 NSTimer 的创建方法,都是类方法。Target-action:+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)...

2019-08-08 00:27:50 795

原创 iOS开发-invalid nib registered for identifier (Cell) - nib must contain exactly one top level object

error reason: 'invalid nib registered for identifier (WorksCell) - nib must contain exactly one top level object which must be a UITableViewCell instance'无效的 nib 注册标识符(重要符号),nib 必须包含一个顶级对象,它必须是一个 UI...

2019-07-30 09:46:42 1387

原创 iOS开发-快速修改UIView的frame方法

在iOS中,通常修改UIView.frame中的某一个值是非常痛苦的,因为Size和Origin都是readonly的,所以每次都需要进行如下繁琐的书写:view.frame = CGRectMake(view.frame.origin.x, 100, view.frame.size.width, view.frame.size.height);这种写法在UI较多的界面中,写的人非常痛苦...

2019-07-28 22:20:13 1570

原创 iOS开发-frame与bouns详解

1、iOS坐标系在iOS坐标系中,以屏幕左上角为坐标原点(0, 0),往右是X正方向,往下是Y正方向。2、frame与bounsbounds和frame都是CGRect类型,CGRect是包含一个CGPoint和一个CGSize的结构体。struct CGRect { CGPoint origin; CGSize size;};origin决定view的原...

2019-07-17 21:23:37 513

原创 常见的HTTP状态码(HTTP Status Code)

1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。2XX系列:代表请求已成功被服务器接收、理解、并接受。这系列中最常见的有200、201状态码。3XX系列:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定...

2019-06-10 16:02:24 1981

原创 iOS开发-instancetype的正确使用姿势

1、instancetypeinstancetype意思为实例化,instancetype与和id一样,都可以指向一个继承了Object(或者NSObject)类的对象。区别在于:instancetype只能作为方法返回值,会返回该方法所在的类的实例化对象,所以instancetype被称为关联返回类型。使用instancetype会在编译时进行类型检查,有利于开发者在编译阶段发现错误...

2019-05-26 16:08:42 3868 1

原创 iOS开发-id、instancetype、NSObject *和id<NSObject> *的区别

首先需要知道,在cocoa的开发环境里,NSObject是所有类的根类。1、idid的定义:typedef struct objc_object { Class isa;} *id;从定义来看,id就是一个isa指针,可以指向任何一个继承了Object(或者NSObject)类的对象,所以id可以指向任何一个cocoa的合法对象,id可以简单理解为一个万能指针。id...

2019-05-26 15:31:57 507

iOS Core Animation:Advanced Techniques.zip

iOS Core Animation:Advanced Techniques的中文译本,学习iOS 核心动画技巧的开发书籍,大家可以放心下载。

2019-07-28

《啊哈!算法》.zip

《啊哈!算法》是一本充满智慧和趣味的算法入门书。没有枯燥的描述,没有难懂的公式,一切以实际应用为出发点,通过幽默的语言配以可爱的插图来讲解算法。你更像是在阅读一个个轻松的小故事或是在玩一把趣味解谜游戏,在轻松愉悦中便掌握算法精髓,感受算法之美。里面有两版:带书签和可扫描,一定可以满足你的需求。

2019-05-19

算法图解:像小说一样有趣的算法入门书

算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。算法图解:像小说一样有趣的算法入门书。

2019-04-14

趣谈网络协议

趣谈网络协议:小说一样的网络协议入门课,网络协议是每个程序员入门的必修课,但是彻底掌握并应用网络协议知识却并非易事,比如常见的 TCP/IP、HTTP。 趣谈网络协议(1-41讲)PDF资料。

2019-03-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除