iOS-其他
靠近星星的太阳
一专多能、刻意练习、终身成长。
展开
-
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 · 526 阅读 · 0 评论 -
iOS开发-事件的传递链和响应链
前言当我们点击屏幕的时候,就产生了一个点击事件,那程序是如何知道这个点击事件应该由谁来处理?响应者在iOS中,能够响应事件的就是响应者,而所有响应者都是UIResponser的子类,例如:UIView、UIButton、UIControl、UIWindow、UIViewController、AppDelegate、UIApplication以及它们的子类。UIResponder声明了各种点击事件的处理,比如点击,按压,移动等。响应链响应链就是响应者都连接一起的一个链条的层级关系,说是链条其实更类原创 2020-08-03 18:47:42 · 1516 阅读 · 1 评论 -
App Store审核规则指南!
前言对比多个厂家的安卓商店,苹果App Store的审核规则那是一个相当的严格。只要是打过交道的同学都知道,苹果的审核规则完全就是一个“黑盒”,虽然苹果给出了明确的App Store 审核指南,但是实际审核过程遇到的问题要比规则里面多的多,并且都很奇葩。因此,App在上线之前一定需要多次测试,并且熟知App Store审核规则,确保没有任何问题才提交审核,否则一次次的修改和提交,也是一件麻烦事,还耽误时间。苹果审核流程概要首先要了解苹果审核机制,苹果审核会有两个过程,先是机器审核(主要扫描代码),原创 2020-08-01 03:03:02 · 2022 阅读 · 1 评论 -
App Store审核规则简要汇总
App Store审核规则简要汇总提交之前会发生崩溃、存在错误的 app 会被拒绝。app 信息及元数据不完整、不正确的 app 会被拒绝。及时更新有效联系信息。提供审核有效的帐户和密码,以及所需的任何其他硬件或资源。开启服务器,确保 app 在审核时可以使用。在 App Review 备注中附上与非明显功能及 app 内购买项目相关的详细说明,包括支持文稿 。app 还必须遵循了其他相关指南:开发指南、设计指南、品牌和营销指南。未适配暗黑模式的 app 会被拒绝。1、安全App原创 2020-08-01 02:50:53 · 5099 阅读 · 0 评论 -
iOS开发-常用数据类型字节数
前言项目Value电脑$1600手机$12导管$1Column 1Column 2centered 文本居中right-aligned 文本居右原创 2020-07-28 01:53:09 · 1148 阅读 · 0 评论 -
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 · 789 阅读 · 0 评论 -
iOS开发-位运算基础
前言现代计算机只有0/1状态,计算机中所有的数据按照具体的编码格式以二进制的形式存储在设备中。直接操作这些二进制数据的位数据就是位运算,位运算是一种极为高效乃至可以说最为高效的计算方式,虽然现代程序开发中编译器已经为我们做了大量的优化,但是理解并合理的使用位运算可以提高代码的可读性以及执行效率。原码原码规定数值最高位为符号位,正数符号位为0,负数符号位为1(0有两种表示:+0和-0),其余位表示数值的大小。例如,11的原码为00001011,-11的原码就是10001011。原码不能原创 2020-07-23 02:43:10 · 1278 阅读 · 0 评论 -
iOS开发-NSString类簇探究
前言在 Objective-C 的 Fondation 框架中 NSString 对象是很复杂的存在,使用了抽象工厂模式,NSString其实是多个类簇的抽象类,不同的创建方式以及不同的字符长度都可能影响最终得到的类簇类型,今天就来研究一下NSString 下复杂的类簇。为了观察 NSString 的内存管理情况,选择关闭 ARC 使用 MRC 来进行测试,以观察其引用计数等状况。...原创 2020-04-08 23:29:25 · 641 阅读 · 0 评论 -
iOS开发-info访问权限配置
前言iOS 10以后,苹果增强了对用户隐私的保护,访问照相机、相册、麦克风、定位、通讯录等,都需要在info.plist 文件中添加权限,而且少一个都不行。可以根据项目需要添加,项目中使用了权限,就添加对应的权限。但最好都先全部添加进去,这样不管用了什么都不会出问题,反正放着不亏,用了血赚。权限Privacy - Bluetooth Peripheral Usage Descr...原创 2019-12-22 16:12:57 · 1240 阅读 · 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 11:18:45 · 678 阅读 · 0 评论 -
iOS开发-获取文件的MIMEType
有时候我们需要获取文件的MIMEType的信息,比如向服务器上传文件资源时需要将文件资源类型传给服务器,这样就可以判断文件是图片还是音视频,下面就介绍关于获取MIMEType的方法:- (NSString *)fileMIMETypeURLSessionWithPath:(NSString*)path { //1.确定请求路径 NSURL *url = [NSURL file...原创 2019-12-16 18:13:50 · 942 阅读 · 0 评论 -
iOS开发-调用系统邮箱 MFMailComposeViewController
在APP中发送邮件是一个很普遍的应用场景,譬如将用户反馈的邮件发送到指定邮箱,就可以通过在APP中直接编辑邮件或者打开iOS自带的Mail来实现。一般使用 MFMailComposeViewController在我们自己的APP中展现一个邮件编辑页面,这样发送邮件就不需要离开当前的APP。前提是系统中的Mail要设置了账户,或者iCloud设置了邮件账户才能使用。首先要导入系统库:...原创 2019-12-16 16:55:10 · 2164 阅读 · 0 评论 -
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 · 1559 阅读 · 0 评论 -
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 · 796 阅读 · 0 评论 -
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 · 429 阅读 · 0 评论 -
iOS开发-日期转换那些事 NSDateFormatter
NSDate 和 NSString 之间的相互转换是平常常用的方法,应用场景非常多。NSDate和NSString之间的相互转换需要使用NSDateFormatter,NSDateFormatter提供了stringFromDate和dateFromString这两个方法,让我们进行转换。NSDateFormatter转换格式年y 年份不带前导零(2009、2019) yy 显示...原创 2020-03-07 00:08:41 · 955 阅读 · 0 评论 -
Object-c编码规范的几点建议
(PS:当你真的按照这些看似偏执的规则去做的时候,你就真的能够发现“伟大来自细节”,而且会受益匪浅。)总则1.Don’t repeat your self.(不要重复你自己。自己写过的功能最好能保存并封装下来。)2.代码自注释,依靠代码本身来表达你的设计意图,不要依赖注释。(代码的命名就体现在这。)3.单一指责,无论是类、函数、模块、包尽可能令其指责纯净且单一。4.死程序不说谎,不要...原创 2018-07-02 21:07:26 · 145 阅读 · 0 评论 -
iOS开发-UIButton使用block响应点击事件
前言为什么要给UIButton添加block点击事件,要放弃Action-Target的方式?首先第一个是因为懒,写Action-Target要比写block多写好多代码,还要想一个好一点的方法名,起名什么的最困难啦。其次是能最快最直观地看到UIButton要做什么事情。添加方法为了兼容性和拓展性,所以使用category给UIButton添加了一个属性和两个Block方法。...原创 2019-10-04 02:30:56 · 1171 阅读 · 0 评论 -
iOS开发-防止UIButton重复点击
前言在iOS开发中,有几个实际业务场景需要控制UIButton响应事件的时间间隔:当点击按钮后会执行网络请求时,若请求耗时稍长,用户往往会再点一次。这样,就执行了两次请求,造成了资源浪费。 当移动终端性能较差时,连续点击按钮会执行多次事件(比如 push 出来多个viewController)。 防止用户暴力点击,不停的点击。方案控制 UIButton 响应事件时间间隔的方案...原创 2019-11-13 00:21:49 · 310 阅读 · 0 评论 -
iOS-类方法和实例方法
类方法类方法也叫静态方法或工厂方法 在声明(.h)和实现(.m)中函数以 + 开头 在应用程序开始运行时一直驻于内存,所以可直接通过类名进行引用该方法:[UIColor whiteColor] 调用类方法速度很快,但会占用内存,适合整个应用程序中频繁调用的方法 类方法一般用于实现一些工具方法,比如对某个对象进行扩展,或者实现单例等 类方法内部可以通过self调用自己的类方法 类方法...原创 2018-11-13 16:54:55 · 2300 阅读 · 0 评论 -
iOS开发-instancetype的正确使用姿势
1、instancetypeinstancetype意思为实例化,instancetype与和id一样,都可以指向一个继承了Object(或者NSObject)类的对象。区别在于:instancetype只能作为方法返回值,会返回该方法所在的类的实例化对象,所以instancetype被称为关联返回类型。使用instancetype会在编译时进行类型检查,有利于开发者在编译阶段发现错误...原创 2019-05-26 16:08:42 · 3874 阅读 · 1 评论 -
iOS-初识Scheme
什么是Scheme?简单的说,由于苹果选择沙盒来保障用户的隐私和安全,App只能访问自己的沙盒,但同时也阻碍了应用间合理的信息共享。所以苹果提供了一个可以在App之间跳转的方法:URL Scheme。在以本地应用为主的 iOS 上,我们可以像定位一个网页一样,用一种特殊的 URL 来定位一个应用甚至应用里某个具体的功能,而定位这个应用的标识,也就是Scheme。例如,多数app会跳转到...原创 2018-09-20 15:52:51 · 1512 阅读 · 0 评论 -
iOS开发-AppIcon和LaunchImage尺寸
根据需求选择相应尺寸。1、AppIcon 尺寸iPhone Notification iOS 7-10 20pt 2x( 40x40 ) 3x( 60x60 )iPhone、Spotlight iOS 5,6 、Settings iOS 5-10 29pt 2x( 58x58 ) 3x( 87x87 )iPhone...原创 2018-09-29 14:03:59 · 632 阅读 · 0 评论 -
iOS开发-设置启动图片LaunchImage
通常app在开启的时候都会有自己的启动图片,下面就开始设置app的启动图片。第一步:在图片资源包里创建LaunchImage。然后就创建好了LaunchImage,只不过一开始是空的,而这里我已经添加好了图片。注意:一定要按照尺寸添加全部图片,不然会报错。附上:iOS-AppIcon和LaunchImage尺寸附上仅供学习使用:配置好一部分的LaunchImage下载...原创 2018-09-29 14:06:40 · 1355 阅读 · 0 评论 -
iOS-获取时间戳
时间戳(timestamp)通常是一个数字序列,唯一地标识某一刻的时间。时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。-(NSString *) timeStampWithOffsetTime:(NSInteger) offsetTime { NSDate* date = [NSDate da...原创 2018-10-19 12:59:53 · 2042 阅读 · 0 评论 -
iOS-根据字典key排序提取value
字典本身无序,我们有时候需要依据有序字典key提取value。/** 获取字典有序value数组 对传入的字典key进行排序,依序提取value入数组 @param dict NSDictionary @return NSArray */-(NSArray *) orderValueArrayWithDictionary:(NSDictionary *) dict { ...原创 2018-10-19 14:18:05 · 4410 阅读 · 0 评论 -
iOS-提取URL参数为字典
/** 获取url的所有参数 @param url 需要提取参数的url @return NSDictionary */-(NSDictionary *) parameterWithURL:(NSURL *) url { NSMutableDictionary *parm = [[NSMutableDictionary alloc]init]; //传入url创建...原创 2018-10-19 14:20:10 · 6546 阅读 · 1 评论 -
iOS开发-cocoapods安装和更新指定库指令
pod install --verbose --no-repo-update该命令只安装新添加的库,已更新的库忽略pod update库名--verbose --no-repo-update该命令只更新指定的库,其它库忽略原创 2018-10-19 17:08:00 · 3896 阅读 · 0 评论 -
iOS开发-AppDelegate
1. 应用程序的生命周期1.1 应用程序的状态应用程序在整个生命周期中会在五种状态之间不断转换。Not running:未运行,程序没有启动。 Inactive:未激活,程序在前台运行,但没有接收到任何事件,或被其他任务强制占用了,例如突然来了电话、程序在前台时手机自动锁屏等。在没有事件处理情况下程序通常停留在这个状态。 Active:激活,程序在前台运行而且接收到事件。这也是前台...原创 2019-02-08 03:04:02 · 6337 阅读 · 0 评论 -
iOS开发-@property探究
通常我们在开发iOS都会使用@property来定义属性,那么我们今天就来仔细探究一下@property。@property的作用@property声明的属性会自动生成一个带下划线的成员变量,并自动生成对应属性的setter/getter方法,但你在代码不会看到它们,但能够使用。比如使用self.属性的时候就会使用就会使用到setter/getter方法,setter/getter方法...原创 2018-11-14 16:36:21 · 271 阅读 · 0 评论 -
iOS开发-内存分区与分配
Objective-C从名字来看就可以知道是一门超C语言,所以了解C语言的内存模型对于理解Objective-C的内存管理、优化性能有很大的帮助。C语言内存模型图如下:从图中可以看出内存被分成了5个区,每个区存储的内容都不相同。1、栈区(stack)传入函数的参数值、函数体内声明的局部变量等,由编译器自动分配释放,通常在函数执行结束后就释放了。(注意:但不包括st...原创 2019-01-13 17:52:51 · 927 阅读 · 0 评论 -
iOS-extern、static、const详解
1、constconst对变量的修饰在<编译阶段>执行,被const修饰的变量在<编译阶段>会进行编译检查,会报编译错误。被const修饰的变量仅在<编译阶段>初始化一次,在<常量区>为它分配一份内存,一直到程序结束运行由系统回收。const的作用:将位于const右部的(全局/局部)变量修饰为(全局/局部)常量 被const修...原创 2019-01-14 15:22:34 · 1259 阅读 · 0 评论 -
iOS-#define详解
前言宏(#define)在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏(#define)被大量使用,可以说底层开发离开宏(#define)将寸步难行。不得不说在C系语言(C、Objective-C、C++等)中宏(#define)真是个非常方便又强大的东西。宏(#define)在基本的语法上是非常的简单的,但完全不会影响它的强大。不...原创 2019-01-15 00:01:03 · 3510 阅读 · 1 评论 -
iOS-NSString、NSMutableString
1.NSStringObjective-C的字符串(NSString),结尾没有隐藏的\0。构造方法://1、直接赋值@""//2、格式初始化[NSString stringWithFormat:@""];[[NSString alloc] initWithFormat:@""];//3、创建不赋值[NSString string];//用以下这两种方法,编译器会...原创 2019-02-03 19:01:54 · 428 阅读 · 0 评论 -
iOS开发-打印内存地址的正确姿势
地址有两种情况:指针的内存地址; 指针指向的对象的内存地址;所以打印内存地址的正确姿势如下:NSString *str = @"SunSatan"; NSLog(@"指针所指向对象的内存地址:%p",str);NSLog(@"指针自己的内存地址:%p",&str);...原创 2019-02-14 20:53:57 · 5762 阅读 · 1 评论 -
iOS-字符串生成二维码或条形码
如今我们需要根据字符串或url来生成一个二维码或条形码图片。1.生成二维码图片-(void)loadQRCodeImg{ //1.将字符串转出NSData NSData *img_data = [self.QRCode dataUsingEncoding:NSUTF8StringEncoding]; //2.将字符串变成二维码滤镜 CIFilte...原创 2018-09-14 15:43:22 · 2169 阅读 · 0 评论 -
iOS开发-项目设置默认语言为中文
1.找到项目中的info.list,点击右键选中Add Row添加Localizations,打开列表可以看到第一个选项是英语,在最右边打开列表,选中简体中文就可以了2.在info.list添加Localized resources can be mixed将NO改为YES,将会默认使用系统语言。(推荐)3. 在info.list里找到Localization ...原创 2018-08-13 14:47:53 · 17692 阅读 · 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 · 508 阅读 · 0 评论 -
iOS开发-循环引用
一、循环引用的产生-- :表示弱引用。-> :表示强引用。循环引用可以简单理解为对象A引用了对象B,而对象B又引用了对象A:A -> B -> A,此时双方都同时保持对方的一个引用,导致任何时候双方的引用计数都不为0,双方始终无法释放就造成内存泄漏。当然不只是两个对象之间相互引用会形成循环引用,多个对象之间相互引用最终形成环同样会形成循环引用。例如:A -&g...原创 2019-02-19 02:54:33 · 1667 阅读 · 0 评论 -
iOS Objective-C 编程规范
目录前言命名规范注释规范#define规范全局常量宏(不推荐使用)私有常量宏(不推荐使用)类函数宏#pragma mark规范#import规范类规范@Interface规范常量规范协议规范变量规范@property规范@implementation规范方法规范Initializer和dealloc规范Designated...原创 2019-02-24 19:48:32 · 383 阅读 · 0 评论