自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 iOS 面试题-2019.下

简要说一下autoreleasePool的数据结构简单说是双向链表,每张链表头尾相接,有parent、child指针,每创建一个池子,会在首部创建一个哨兵对象作为标记,最外层池子的顶端会有一个next指针。当链表容量满了,就会在链表的顶端,并指向下一张表说一下autoreleasePool的实现原理autoreleasePool是一个延时release的机制,在自动释放池被销毁或耗尽时,会向池中的所有对象发送release消息,释放所有autorelease对象autoreleaseP.

2020-09-09 19:44:33 221

原创 iOS 初探 AFNetworking

本文不对AFNetworking作全面的解析,仅对比解析一下2.x和3.x的差异。AFNetworking分为如下5个功能模块:网络通信模块(AFURLSessionManager、AFHTTPSessionManger)网络状态监听模块(Reachability)网络通信安全策略模块(Security)网络通信信息序列化/反序列化模块(Serialization)对于iOS UIKit库的扩展(UIKit)AFNetworking 2.x需要常驻线程而3.x不需要常驻线程2.x

2020-07-15 18:41:32 539

原创 iOS 正则匹配常用方法

验证手机号// 验证手机号+ (BOOL)isValidatePhone:(NSString *)phone{ NSString *phoneRegex = @"^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$"; NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; return [phoneTe.

2020-07-08 18:14:51 1344

原创 iOS 内购项目的App Store推广

iOS 11以后的用户可以在App Store内的下载页面内直接购买应用的内购商品,这项功能苹果称作做Promoting In-App Purchases,如果你的App需要在App Store推广自己的内购商品,则需要在App Store推广里上传推广用的图像,另外苹果也在iOS11 SDK里面新增了从App Store购买内购项目跳转到App的新方法选择推广App内购买项目的好处提高展示促销机会,在产品页面上,开发者可一次性推广多达20个App内购买项目提高下载量,App内购买项目的推广还能

2020-05-27 17:01:41 1584

原创 iOS block原理详解

block本质block底层就是一个struct __main_block_impl_0类型的结构体,这个结构体中包含一个isa指针,本质上是一个OC对象block是封装了函数调用以及函数调用环境的OC对象block底层结构block底层结构就是__main_block_impl_0结构体,内部包含了impl结构体和Desc结构体以及外部需要访问的变量,block将需要执行的代码放到一个函数里,impl内部的FuncPtr指向这个函数的地址,通过地址调用这个函数,就可以执行block里面.

2020-05-13 16:30:08 1197

原创 iOS 数据结构

数组和链表的区别数组地址连续,查找速度快,操作效率低存储单元在定义时分配,元素个数固定,内存空间要求高链表地址不连续,查找速度慢,操作效率高存储单元在程序执行时动态申请,可按需动态增减iOS内存分区的情况,五大区域栈区Stack先进后出FILO由编译器自动分配和释放栈空间多线程不共享连续的内存地址,由高向低分配,不会产生碎片空间较小,运行速度较快,效率高栈...

2020-05-06 16:48:19 300

原创 iOS Crash文件获取及符号化

Crash文件获取大致可以分为两种方式:远程获取和本地获取;具体可以分为如下四种途径1.1. 远程获取;已经上传到iTunes Connect的应用,可以通过iTunes Connect的App分析查看App崩溃情况不会有崩溃日志,如果是TestFlight测试,则可以在iTunes Connect获取到崩溃日志1.2. 远程获取;通过Xcode菜单Window -> Orga...

2020-04-29 16:17:00 1473

原创 iOS 时间日期总结

获取时间戳单位秒,保留六位有效数字,格式如:1574068247.545103NSDate *datenow = [NSDate date];NSString *timeSp = [NSString stringWithFormat:@"%f", (double)[datenow timeIntervalSince1970]];单位秒,整数,格式如:1574068265NS...

2020-04-22 15:19:09 309

原创 Mac OS + Mac PE + Win PE 三合一 U盘制作教程

开始之前需要准备一下工具:移动硬盘或者U盘一个Mac OS原版安装文件Mac PEWin PEDiskGenius分区工具Win PE制作下载好U盘魔术师V5全能版或者通用PE工具箱等Win PE制作软件,安装到电脑打开,然后插入U盘;一般保持默认设置就行,Win PE制作完成。Mac OS分区制作打开DiskGenius分区工具,找到刚刚制作好的U盘,然后选中这个U...

2020-04-08 16:12:18 9603

原创 iOS 如何优化 App 的启动耗时

iOS 的 App 启动时长大概可以这样计算:t(App 总启动时间) = t1(main 调用之前的加载时间) + t2(main 调用之后的加载时间)t1 = 系统 dylib(动态链接库)和自身 App 可执行文件的加载t2 = main方法执行之后到AppDelegate类中的application:didFinishLaunchingWithOptions:方法执行结束前这段时间...

2020-04-01 16:35:52 487

原创 iOS RunLoop

RunLoop概念RunLoop是通过内部维护的事件循环(Event Loop)来对事件/消息进行管理的一个对象没有消息处理时,休眠以避免资源占用;有消息需要处理时,立刻被唤醒为什么main函数不会退出int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain...

2020-01-17 15:10:11 190

原创 iOS 多线程相关之performSelector、死锁

performSelector//在当前线程延迟1s执行,响应了OC语言的动态性:延迟到运行时才绑定方法[self performSelector:@selector(aaa) withObject:nil afterDelay:1];// 回到主线程,waitUntilDone:是否将该回调方法执行完再执行后面的代码// 如果为YES:就必须等回调方法执行完成之后才能执行后面的代码,...

2020-01-08 17:34:53 264

原创 iOS 中事件的响应链和传递链

iOS事件链有两条:事件的响应链;Hit-Testing事件的传递链响应链:由离用户最近的view向系统传递。initial view –> super view –> … –> view controller –> window –> Application –> AppDelegate传递链:由系统向离用户最近的view传递。UIKit –> a...

2019-12-25 16:57:35 270

原创 iOS 面试题-2019.上

UIView和CALayer是什么关系UIView继承自UIResponder类,可以响应事件CALayer直接继承自NSObject类,不可以响应事件UIView是CALayer的delegate(CALayerDelegate)UIView主要处理事件,CALayer负责绘制每个UIView内部都有一个CALayer在背后提供内容的绘制和显示,并且UIView的尺寸样式都由内...

2019-12-18 16:13:06 276

原创 iOS 关于Other Linker Flags的作用

在用第三方库时,我们常常在Xcode的Build Settings下Other Linker Flags里面加入-ObjC标志,它和Objective-C的一个重要特性:类别(category)有关根据官方的解释,Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数(或者方法)定义链接符号,它只为每个类创建链接符号。这样当在一个静态库中...

2019-12-11 15:01:06 408 1

原创 iOS 使用Jenkins持续集成(简称CI)

安装jenkins1.1. 直接到官网下载安装包,通过安装包安装1.2. 通过Homebrew使用命令行安装1. 安装Homebrew$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2. 安装Jenkins$ brew install jenkins......

2019-11-27 17:12:03 567 1

原创 iOS 插件化开发(动态库研究)

framework是一种优秀的资源打包方式,我们平时看到的第三方发布的framework大部分都是静态库,苹果对iOS允许使用动态库,但是要利用动态库热更新,由于苹果的审核和签名技术,暂时还是不行,内部使用还是可行的思路:在用户想使用某个功能的时候让其从服务器上将动态库文件下载到本地,然后手动加载动态库,实现功能的的插件化创建动态库# 头文件部分#import <Foun...

2019-11-14 14:05:07 1091

原创 iOS 唤起APP之Universal Link(通用链接)

iOS 9之前,一直使用的是URL Schemes技术来从外部对App进行跳转,但是iOS系统中进行URL Schemes跳转的时候如果没有安装App,会提示Cannot open Page的提示,而且当注册有多个scheme相同的时候,目前没有办法区分,但是从iOS 9起可以使用Universal Links技术进行跳转页面,这是一种体验更加完美的解决方案什么是Universal Li...

2019-11-06 16:28:11 14704 1

原创 iOS 归档缓存

代码如下:头文件定义// 归档缓存内容+ (void)archiverObject:(id)object byKey:(NSString *)key withPath:(NSString *)path;// 解归档缓存内容+ (id)unarchiverObjectByKey:(NSString *)key withPath:(NSString *)path;方法实现+ (...

2019-10-30 18:11:30 143

原创 iOS UIView分类

.h内容- (CGPoint)origin;- (void)setOrigin:(CGPoint)point;- (CGSize)size;- (void)setSize:(CGSize)size;- (CGFloat)x;- (void)setX:(CGFloat)x;- (CGFloat)y;- (void)setY:(CGFloat)y;- (CGFloat)w...

2019-10-23 17:35:29 251

原创 iOS 发布CocoaPods私有库

需要做的工作包括以下几点创建一个本地的仓库,将自己的代码搞进去将自己的代码上传到远程私有仓库中去创建一个pods 的描述文件 .podspec修改.podspec描述文件中的相关的描述信息创建远程内部私有Spec Repo仓库向私有的Spec Repo仓库中提交.podspec在个人项目中的Podfile中增加刚刚制作的好的Pod并使用后期的升级维护具体详细的步骤如下...

2019-10-16 17:14:14 658

原创 Mac OS 安装与恢复

通过 macOS 恢复功能启动要通过 macOS 恢复功能启动,请开启 Mac 并立即按住键盘上的以下组合键之一。通常建议您使用 Command-R-电源键Command (⌘)-R-电源键安装您的 Mac 上装有的最新 macOSOption-⌘-R-电源键升级到与您的 Mac 兼容的最新 macOSShift-Option-⌘-R-电源键安装 Mac 随附的 macOS 或...

2019-10-09 16:45:57 702

原创 iOS 指针详解

指针数组与数组指针在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针的表达也十分多样。同理,指针数组就是存放指针的数组,其本质为数组。由于[ ]的优先级高于*的优先级,指针数组与数组指针的表达可做如下表示:int * p1 [10];  // 指针数组  p1先与“[ ]”结合构成一个包含10个元素的数组,int*表示的则是数组的内容int (...

2019-09-25 14:31:51 715

原创 iOS KVO

KVO和NSNotificationCenter都是iOS中观察者模式的一种实现。区别在于,相对于被观察者和观察者之间的关系,KVO是一对一的,而NSNotificationCenter是一对多的。KVO对被监听对象无侵入性,不需要修改其内部代码即可实现监听。KVO底层实现KVO是基于runtime机制实现的,运用了一个isa-swizzling技术。isa-swizzling就是类型混合指...

2019-09-18 16:16:05 88

原创 iOS python自动化出包脚本

脚本代码如下:#!/usr/bin/python# -*- coding:UTF-8 -*-import osimport sysimport time# 发邮件所用from email import encodersfrom email.header import Headerfrom email.mime.text import MIMETextfrom email.u...

2019-09-11 17:08:14 275

原创 iOS 13-Sign In with Apple

最近了解了iOS 13新增功能之Sign In with Apple,Sign In with Apple是跨平台的,可以支持iOS、macOS、watchOS、tvOS、JS。本文主要内容为Sign In with Apple在iOS上的基础使用。详情参考WWDC 2019审核备注Sign In with Apple will be available for beta testing...

2019-09-06 13:52:00 2996 1

原创 iPhone 手机官方查询网站

今天给大家分享一些苹果官方网站,一定要收藏起来,以备不时之需。例如激活查询、苹果服务器状态等等。查看激活日期当你新入手iPhone 或其他苹果设备,可以通过官方查看保障状态页面,在线查看激活日期,由此判断新设备是否被提前激活。苹果官方保修服务查询页面首先,打开手机设置 → 通用 → 关于本机,长按序列号,拷贝备用。然后,在Safari浏览器打开苹果官方保修服务查询页面,填入序列号进行查询。...

2019-09-03 17:16:14 638

原创 mac 搭建基于Hexo-Github的Blog

GitHubPages + Hexo:免费,使用简单,使用者众多博客搭建创建 GitHub 仓库注意 Respository name 中一定要输入:你的用户名.github.io其他地方不用修改,然后直接点 ”Create repository“ 按钮完成创建即可安装博客需要的框架安装 Homebrew$ ruby -e "$(curl -fsSL https:/...

2019-08-30 15:30:34 181

原创 iOS copy相关

strong和copy的区别当我们用@property来声明属性变量时,编译器会自动为我们生成一个以下划线加属性名命名的实例变量(@synthesize copyyStr = _copyyStr),并且生成其对应的getter、setter方法。当我们用self.copyyStr = originStr赋值时,会调用coppyStr的setter方法,而_copyyStr = originSt...

2019-08-29 18:51:13 76

原创 iOS 发布个人开源框架到CocoaPods

需要做的工作包括以下几点创建一个本地的仓库,将自己想要公开的代码搞进去将自己的代码上传到远程公开仓库中去创建一个pods 的描述文件 .podspec修改.podspec描述文件中的相关的描述信息将当前本地的.podspec文件传到CocoaPods官方的索引库中测试一下,有没有上传到CocoaPods的索引库中后期的升级维护具体详细的步骤如下创建远程仓库注意点...

2019-08-28 15:55:01 311

原创 iOS UIButton之改变有效点击区域

解决方案通过重写- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;以改变按钮的有效点击区域- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{ if (_qi_clickAreaReduceValue > 0) { ...

2019-08-27 17:01:47 453

原创 iOS OTA无线分发安装App内测下载

搭建步骤应用.ipa文件,可以是企业级签名,也可以是dev签名包manifest.plist文件,plist文件和ipa文件必须放在支持https://服务器上,而且必须是公网ssl,自签名及免费的https不可用(本文以GitHub为例)下载应用的html页面manifest.plist内容如下<?xml version="1.0" encoding="UTF-8"?&...

2019-08-23 17:42:55 552

原创 CocoaPods安装与使用步骤详解

目录CocoaPods安装过程CocoaPods的使用删除cocoapods已导入项目的第三方库和移除项目中的cocoapodsCocoaPods安装过程安装并载入rvm环境打开终端,输入指令$ rvm -v安装rvm安装指令是$ curl -L https://get.rvm.io | bash -s stable载入RVM环境:$ source ~/.rv......

2019-08-22 18:04:04 720 1

原创 iOS 使用自定义字体

1. 动态下载系统提供的中文字体为了实现更好的字体效果,在应用中加入字体包问题:字体文件比较大,会造成应用体积剧增中文字体通常都是有版权的动态下载中文字体的API可以动态的向iOS系统中添加字体文件,这些字体文件都是下载到系统的目录中,所以不会造成应用体积增加,字体文件下载后还可以在所有应用间共享。并且字体文件是iOS系统提供的,也免去了字体使用版权的问题下载的时候需...

2019-08-21 16:37:31 1018

原创 iOS 后台运行方法

应用可以调用UIApplication的beginBackgroundTaskWithExpirationHandler方法,让应用最多有10分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存、发送统计数据等工作。代码如下:// AppDelegate.h文件@property (nonatomic, assign) UIBackgroundTaskIdentifier backgrou...

2019-08-14 16:14:57 1011

原创 Core Foundation对象的内存管理

对于底层CoreFoundation对象,我们只需要延续以前手工管理引用计数的办法即可在ARC下,我们有时需要将一个CoreFoundation对象转换成一个OC对象,这个时候我们需要告诉编译器,转换过程中的引用计数需要如何调整。需要引入bridge相关的关键字__bridge: 只做类型转换,不修改相关对象的引用计数,原来的CoreFoundation对象在不用时,需要调用CFRel...

2019-08-13 14:02:55 207

原创 iOS timer定时器正确使用方式

1. 初始化,添加定时器前先移除[self.timer invalidate];self.timer = nil;self.timer = [NSTimer scheduledTimerWithTimeInterval:2.f target:self selector:@selector(lookforCard:) userInfo:nil repeats:YES];[[NSRu...

2019-08-12 16:43:02 1485

原创 iOS 简单日志系统

#define YostarDebugLogLevel(level, fmt, ...) \[YostarDebugLog logLevel:level file:__FILE__ function:__PRETTY_FUNCTION__ line:__LINE__ format:(fmt), ##__VA_ARGS__]#define YostarDebugLog(fmt, ...) \...

2019-08-09 16:04:52 304

原创 iOS Toast 实现

// 对外暴露两个方法供调用+ (void)showToast:(NSString *)text;+ (void)showToast:(NSString *)text inView:(UIView *)superView;// 实现方法+ (void)showToast:(NSString *)text{ [ToastUtil showToast:text inView:[UIA...

2019-08-08 15:46:37 880

原创 iOS 系统自带分享

**注意:**国行手机无法使用系统自带的facebook分享,国行手机facebook被阉割导致分享失败。/** * 分享 * 多图分享,items里面直接放图片 * 分享链接 * NSString *textToShare = @"mq分享"; * UIImage *imageToShare = [UIImage imageNamed:@"imageName"]; *...

2019-08-06 15:04:07 575

空空如也

空空如也

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

TA关注的人

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