靠近星星的太阳
码龄8年
关注
提问 私信
  • 博客:256,403
    256,403
    总访问量
  • 114
    原创
  • 1,987,750
    排名
  • 25
    粉丝
  • 0
    铁粉

个人简介:一专多能、刻意练习、终身成长。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广西
  • 加入CSDN时间: 2016-10-30
博客简介:

SunSatan的博客

博客描述:
一专多能、刻意练习、终身学习
查看详细资料
个人成就
  • 获得93次点赞
  • 内容获得21次评论
  • 获得240次收藏
  • 代码片获得439次分享
创作历程
  • 14篇
    2020年
  • 71篇
    2019年
  • 33篇
    2018年
成就勋章
TA的专栏
  • 读书笔记
    3篇
  • 计算机原理
    2篇
  • 工作日志
  • 计算机网络
    1篇
  • 数据结构和算法
    23篇
  • iOS-UI成长之路
    24篇
  • iOS-数据存储
    1篇
  • iOS-Xcode使用
    4篇
  • iOS-其他
    48篇
  • iOS-第三方库探究
    1篇
  • iOS-多线程
    3篇
  • iOS-设计模式
    4篇
  • iOS-错误汇总
    3篇
兴趣领域 设置
  • 移动开发
    flutterreact native
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

352人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

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 ·
616 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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

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

App Store审核规则指南!

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

App Store审核规则简要汇总

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

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

前言项目Value电脑$1600手机$12导管$1Column 1Column 2centered 文本居中right-aligned 文本居右
原创
发布博客 2020.07.28 ·
1218 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

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 ·
851 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

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

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

iOS开发-位运算基础

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

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

#import "ViewController.h"#import "OneViewController.h"#import "SSTTimer.h"@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>@property (nonatomic, strong) NSArray *fo...
原创
发布博客 2020.04.09 ·
483 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

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 ·
1585 阅读 ·
2 点赞 ·
0 评论 ·
5 收藏

iOS开发-NSString类簇探究

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

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

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

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 ·
4290 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

iOS开发-info访问权限配置

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

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 ·
750 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

iOS开发-获取文件的MIMEType

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

iOS开发-调用系统邮箱 MFMailComposeViewController

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

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 ·
1260 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

iOS开发-dispatch_semaphore(信号量)

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

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 ·
1627 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏
加载更多