![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS 开发
雨尘-Aaron
这个作者很懒,什么都没留下…
展开
-
weak & strong self
常遇到一个block要使用self,会处理成在外部声明一个weak变量指向self(__weak __typeof(self) weakSelf = self),在block里又声明一个strong变量指向weakSelf(__strong __typeof(weakSelf) strongSelf = weakSelf),weakSelf是为了block不持有self,避免循环引用,而再声明一个s原创 2017-02-16 11:37:15 · 237 阅读 · 0 评论 -
UIButton title和image 水平居中
UIImage *image = [UIImage imageWithContentsOfFile:imgPath]; [but setImage:image forState:state]; NSString *str = but.currentTitle; CGSize size1 = [str sizeWithAttributes:@{NSFontAttributeN原创 2018-01-18 17:24:25 · 752 阅读 · 0 评论 -
pop 到指定控制器
前提 通过push方式 -推出控制器1、从 A控制器 push 新的控制器,从新的控制器返回 直接返回到 A控制器 的 前一个 或 前几个控制器(需要对下面代码略作改动),通过下面方式实现:if (self.navigationController.viewControllers.count != arrCount) { NSMutableArray *arr = [NSMutableAr...原创 2018-06-06 10:51:55 · 421 阅读 · 0 评论 -
音频波动动效
效果 如下:.h#import <UIKit/UIKit.h>@interface PAAudioAnimationView : UIView- (void)startAnimation;- (void)stopAnimation;- (void)setSoundsValue:(CGFloat)value;@end.m#import "PAAudioAnimationView.h"@i...原创 2018-06-06 11:02:29 · 4208 阅读 · 0 评论 -
iOS 响应者链
事件的分发和传递当iOS 程序中发生触摸事件后,系统会将事件加入到UIApplication管理的一个任务队列中 UIApplication将处于任务队列最前端的事件向下分发。即UIWindow UIWindow将事件向下分发,即UIView UIView 首先看自己是否能处理事件,触摸点是否在自己身上。如果能,那么继续寻找子视图 遍历子控件,重复以上两步 如果没有找到,那么自己就是...原创 2019-03-20 21:21:47 · 99 阅读 · 0 评论 -
iOS 构建缓存时选 NSCache 而非NSDictionary
当系统资源将要耗尽时,NSCache可以自动删减缓存。如果采用普通的字典,那么就要自己编写挂钩,在系统通知时手动删减缓存,NSCache会先行删减 时间最久为被使用的对象NSCache 并不会拷贝键,而是会保留它。此行为用NSDictionary也可以实现,但是需要编写比较复杂的代码。NSCache对象不拷贝键的原因在于,很多时候键都是不支持拷贝操作的对象来充当的。因此NSCache对象不会自...原创 2019-03-21 22:22:06 · 355 阅读 · 0 评论 -
UIView的绘制原理 和 异步绘制的实现
UIView 绘制原理 1、当我们调用【UIView setNeedsDisplay】这个方法时,其实并没有立即进行绘制工作,系统会立即调用CALayer的同名方法,并且在当前layer上打上一个标记,然后会在当前runloop将要结束的时候调用CALayer display 这个方法,然后进入视图的真正绘制过程 2、在【CALayer display】这个方法的...原创 2019-03-21 22:32:41 · 1259 阅读 · 0 评论 -
离屏渲染
离屏渲染是指GPU在当前屏幕缓冲区意外的开辟了一个 缓冲区进行渲染操作性能损耗原因:1、创建了新的缓冲区2、上下文的频繁切换产生原因:shouldRasterize 光栅化、遮罩masks、shadows阴影、edgeAntialiasing抗锯齿、不透明、复杂形状、设置圆角、渐变等...原创 2019-03-21 22:41:24 · 492 阅读 · 0 评论 -
iOS 进程间通信8种方式
1、URL scheme 这个是iOS APP通信最常用到的通信方式,APP1通过openURL的方法跳转到APP2,并且在URL中带上想要的参数,有点类似HTTP的get请求那样进行参数传递。这种方式是使用最多的最常见的,使用方法也很简单只需要源APP1在info.plist中配置LSApplicationQueriesSchemes,指定目标App2的scheme;然后再目标Ap...原创 2019-03-26 22:18:46 · 4089 阅读 · 0 评论 -
iOS 2019 最新面试题集锦
一、 js 与 原生OC交互方式: 1.JS发起一个假请求,然后用UIwebView的代理方法拦截这起请求,再做相应的处理 2.在iOS 7 之后Apple添加了一个新的库JavaScriptCore,用来做js交互。 首先导入JavaScriptCore 库,然后在OC 中获取上下文对象。在定义好JS需要调用的方法。JSContext对象conte...原创 2019-03-31 12:03:03 · 8168 阅读 · 0 评论 -
Xcode 控制台 调试命令
原文地址:http://blog.csdn.net/likendsl/article/details/7576549XCode4.0以后,编译器换成了LLVM 编译器 2.0与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结...转载 2019-04-10 20:54:18 · 1434 阅读 · 0 评论 -
自定义tabbar
iOS 自定义tabbar具体代码参考:https://github.com/yuchenArron/TabBar一 、将tabbarviewcontroller 的 tabbar 隐藏 [self.tabBar setHidden:YES];二、自定义tabbarview 继承自 UIView#define CircleDiameter 54#define Screen_Width [UIS原创 2018-01-18 17:22:48 · 261 阅读 · 0 评论 -
AVQueuePlayer 在线播放一组网络音频文件
头文件@interface ZNAudioPlayerUtil : NSObject//播放一组网络音频文件 + (void)playAudios:(NSArraypragma mark - public methods(void)pausePlayer{ AVQueuePlayer *queuePalyer = [ZNAudioPlayerUtil shareInstance].queueP原创 2017-09-12 19:30:32 · 1065 阅读 · 0 评论 -
iOS 录音文件格式转换 lame库
导入 lame 库文件 ,引入lame.h 头文件下面方法 实现了 格式转换 并删除原文件(NSString*)audio_PCM_to_MP3:(NSString *)recordFilePath changeName:(BOOL)isChange audioTime:(NSInteger)audioTime{NSString *wavFileName = [recordFilePath la原创 2017-09-12 19:25:51 · 285 阅读 · 0 评论 -
iOS 多线程(一)Pthread
pthread 是 iOS 多线程的底层实现方式(是POSIX多线程开发框架,是跨平台的C语言框架),平时开发使用很少用到 代码示例如下:/ 创建线程,并且在线程中执行 demo 函数 - (void)pthreadDemo { /** 参数: 1> 指向线程标识符的指针,C 语言中类型的结尾通常 _t/Ref,而且不需要使用 * 2> 用来设置线程原创 2017-02-16 13:53:08 · 338 阅读 · 0 评论 -
GCD介绍(一): 基本概念和Dispatch Queue
什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。 除了代码的平行执行能力,GCD还提供高转载 2017-02-16 18:00:59 · 196 阅读 · 0 评论 -
iOS UIView 和 CALayer 的关系
一、概念: UIView不具备显示功能,拥有显示功能的是它内部的图层即CALayer属性当UIView需要显示到屏幕上时,会调用DrawRect:方法进行绘图,并且将所有的内容绘制在自己的图层上Property()CALayer *layer,绘图完成后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示UIView 的Layer属性在系统内部,被维护着三份拷贝。分别是逻辑树,这里是代码可以原创 2017-02-09 08:47:13 · 2040 阅读 · 0 评论 -
如何管理自己github上的项目
1.在github上初始化仓库 在你的github上初始化一个仓库: 初始化仓库完成 通过终端命令或者github客户端将仓库clone到本地 终端命令: git clone https:github.com/你的仓库的地址clone仓库成功,并将你的项目文件拷贝至该目录下 点击github桌面工具右上角的sync按钮进行同步再在git上查证,同步成功原创 2017-02-10 09:08:37 · 728 阅读 · 0 评论 -
iOS 对象的归档、解档 runtime
iOS 对象的归档、解档 runtime若要实例对象实现归档解档,需要该类遵守NSCoding协议,及以下协议方法项目中以YCArchiveBase类为例,可直接添加属性使用pragma mark - NSCoding(void)encodeWithCoder:(NSCoder *)aCoder{ unsigned int count = 0; //取出所有属性 objc_propert原创 2017-02-07 22:02:31 · 426 阅读 · 0 评论 -
iPhone SDK 应用程序开发 第一章
苹果桌面系统采用的策略,就是创建一种模块化、自包含的应用程序,这种应用程序仅由其自身内部的文件资源构成。 1.1 应用程序剖析 Mac OS X 的前身,NeXT系统,它将应用程序视为一个目录所构成的束。束这个概念引入了一种方法,可以聚合应用程序资源、二进制文件和其他相关文件。 应用程序运行所需的一切都必须包含在自身的目录结构内。(沙盒)应用程序并不知道自己的安装位置,每次安装时,都会有一个唯原创 2017-06-19 22:48:34 · 245 阅读 · 0 评论 -
(一)CoreBluetooth iOS 蓝牙 “中心模式”
使用Corebluetooth框架进行蓝牙开发,有两种模式:一种是中心模式,另一种是外设模式。 中心模式 分为以下几步: 1.建立中心设备 2.扫描外部设备 3.连接外部设备 4.扫描外部设备的服务和特征 5.利用外部设备的特征与外部设备手法数据一、首先导入框架 #import原创 2017-06-09 22:27:13 · 525 阅读 · 0 评论 -
iOS socket 编程
socket (套接字)是通信的基石,是支持tcp/ip协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远端主机的IP地址,远端进程的协议端口。Socket是对TCP/IP协议的封装,socket本身并不是协议,而是一个调用接口(API),通过socket,我们才能使用TCP/IP协议。多个TCP连接或多个应用程序进程可能需要通过原创 2017-06-22 22:12:54 · 213 阅读 · 0 评论 -
OC 和 C 的本质区别
OC使用消息结构(messaging structure),c使用函数调用(function calling) 消息结构:运行时所执行的代码由运行环境决定(动态绑定) 函数调用:运行时所执行的代码由编译器决定 OC的重要工作都有“运行期组件”(runtime component)而非编译器完成,包括: OC面向对象特性所需要的去不数据结构及函数 OC全部内存原创 2017-06-27 22:06:27 · 1060 阅读 · 0 评论 -
十六进制字符串转二进制 --- OC 实现
//将十六进制字符串转换未二进制字符串 + (NSString*)binaryStrFromHexStr:(NSString*)str{NSString *totalBinaryStr = @"";for (int i = 0;i < str.length;i++){ NSString *subStr = [str substringWithRange:NSMakeRange(i, 1)原创 2017-07-26 15:51:38 · 1988 阅读 · 0 评论