iOS
文章平均质量分 67
C_philadd
这个作者很懒,什么都没留下…
展开
-
iOS Runtime理解和应用场景
为了关联属性和其对应的存取方法,需要定义一个全局唯一的键值。原创 2024-03-14 15:08:04 · 2001 阅读 · 1 评论 -
iOS中需要避免的内存泄漏总结
若项目中使用地图相关类,一定要检测内存情况,因为地图是比较耗费App内存的,因此在根据文档实现某地图相关功能的同时,我们需要注意内存的正确释放,大体需要注意的有需在使用完毕时将地图、代理等滞空为nil,注意地图中标注(大头针)的复用,并且在使用完毕时清空标注数组等。大次数循环内存暴涨问题。.........原创 2022-07-15 14:33:53 · 976 阅读 · 1 评论 -
iOS之isKindOfClass与isMemberOfClass、isSubclassOfClass的总结
先看官方文档:一、isKindOfClass 实例方法- (BOOL)isKindOfClass:(Class)aClassDescription Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class. (required)//意思是返回一个B...原创 2022-05-27 19:33:41 · 866 阅读 · 0 评论 -
iOS实现9Patch图片调整(resizableImageWithCapInsets运用)
代码实现:#pragma mark - iOS 调整9Patch- (UIImage *)auto9PatchWithImage:(UIImage *)fixedImage { UIImage *image = fixedImage; //決定图片拉伸的位置 CGFloat top = 42; CGFloat bottom = 20; CGFloat left = 42; CGFloat right = 20; UIEdgeInse原创 2022-03-14 17:38:39 · 1127 阅读 · 0 评论 -
OC是一种“动态语言”
动态和静态类型语言介绍:(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby、js就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。动态语言的优缺点:优点:方便阅读,不需要写非常多的类型相关代码;缺点:不方便调试,命名不规范时会造成读不懂,不利于理解等。(2)静态类型语言:静态类型原创 2022-03-11 12:16:41 · 371 阅读 · 0 评论 -
iOS动画(Core Animation)整理总结
使用优势:Core Animation将大部分实际的绘图任务交给了图形硬件来处理,图形硬件会加速图形渲染的速度。这种自动化的图形加速技术让动画拥有更高的帧率并且显示效果更加平滑,不会加重CPU的负担而影响程序的运行速度。二、Core Animation类图以及常用字段Core Animation类的继承关系图转存失败重新上传取消常用属性duration : 动画的持续时间beginTime : 动画的开始时间repeatCount : 动画的重复次数autoreverses : 执原创 2022-02-25 16:22:20 · 850 阅读 · 0 评论 -
解决横竖屏切换问题导致UIScrollView、UICollectionView、UITableView偏移
常见情况:场景1:以UIScrollView及其子类view,contentSize达到一定的长度,滚动到某个位置时,进行设备横竖屏切换,再次回归设备切换前的方向时,滚动位置发生了变动;场景2:当前控制器为UIScrollView及其子类view,contentSize达到一定的长度,滚动到某个位置时,进行设备横竖屏切换,或者进行跳转下一控制器(且下一控制器为改控制器的屏幕方向不同;例如:当前屏幕方向和竖屏,下一控制器方向为横屏)。原因分析:原因1:设备在横竖屏切换时,会导致屏幕宽(width原创 2022-02-22 10:52:50 · 3739 阅读 · 0 评论 -
iOS之NSKeyedArchiver进行数据归档
普通数组的归档和解档普通数组的归档流程:获得文件归档的路径 使用NSKeyedArchiver类的 NSKeyedArchiver+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path方法将数据归档//普通数组归档- (IBAction)onClickBtn1:(id)sender { //沙盒ducument目录 NSString *docPath = [NSSearchPathForDir原创 2021-07-09 14:25:09 · 984 阅读 · 2 评论 -
iOS之 +(void)load与+(void)initialize理解
1. load1.1 load 方法的调用① 调用时刻:+load方法会在Runtime加载类、分类时调用(不管有没有用到这些类,在程序运行起来的时候都会加载进内存,并调用+load方法); 每个类、分类的+load,在程序运行过程中只调用一次(除非开发者手动调用)。 ② 调用方式:系统自动调用+load方式为直接通过函数地址调用,开发者手动调用+load方式为消息机制objc_msgSend函数调用。 ③ 调用顺序: 先调用类的+load,按照编译先后顺序调用(先编译,先调用),调用子类的+l原创 2021-06-17 15:35:35 · 994 阅读 · 1 评论 -
removeFromSuperview 理解
iOS objectView.removeFromSuperview之后if(self.objectView)仍然成立? // 移除当前自定义视图 for(UIView *myView in [self.view subviews]) { if ([myView isEqual:self.unfinishedView]) { [myView removeFromSuperview]; } }很多人可能碰到和我一样的疑原创 2021-05-26 15:54:30 · 948 阅读 · 0 评论 -
UITextField限制输入长度,完善中文输入法下的缺陷
1、添加target[self.nickNameTF addTarget:self action:@selector(editChange:) forControlEvents:UIControlEventEditingChanged];2、绑定代理#pragma mark UITextField Delegate//最多输入10个字#define kMaxLength 10- (void)editChange:(UITextField*)textfield { ..原创 2021-05-18 11:18:39 · 163 阅读 · 0 评论 -
iOS直播之ijkplayer的集成
环境准备集成ijkplayer需要电脑中安装git和yasm,然后好像还需要一个pkg-config(不确定),安装git、yasm和pkg-config可以使用homebrew。检查自己电脑是不是安装了homebrew、git、yasm可以打开终端依次输入:brew -vgit --versionyasm --versionpkg-config --verison 我的已经安装了环境配置成功安装成功可以忽略以下内容直接查看第一章节,如果没有安装成功请继续,首先打开终.原创 2021-03-09 16:50:15 · 436 阅读 · 3 评论 -
iOS的类方法和实例方法使用区别总结
1、区别:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存。静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快,而且静态内存是有限制的,太多了程序会启动不了。2、使用场景:如果需要访问或者修改某个实例的成员变量时,将该方法定义成实例方法。类方法正好相反,它不需要访问或者修改某个实例的成员变量。类方法一般用于实现一些工具方法,比如对某个.原创 2021-03-08 11:32:49 · 775 阅读 · 0 评论 -
iOS之runtime将JSON转换成Model
封装initWithNSDictionary:方法该方法接收NSDictionary对象, 返回PersonModel对象.#pragma mark - 使用runtime将JSON转成Model- (void)json2Model { NSString *file = [[NSBundle mainBundle] pathForResource:@"Persons" ofType:@"json"]; NSData *data = [NSData dataWithContents原创 2020-11-02 17:25:37 · 246 阅读 · 0 评论 -
iOS之事件传递的具体过程介绍
一.hitTest:withEvent:调用过程iOS系统检测到手指触摸(Touch)操作时会将其放入当前活动Application的事件队列,UIApplication会从事件队列中取出触摸事件并传递给key window(当前接收用户事件的窗口)处理,window对象首先会使用hitTest:withEvent:方法寻找此次Touch操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图,称之为hit-test view。window对象会在首先在view hierarchy的顶.原创 2020-10-27 17:35:42 · 388 阅读 · 0 评论 -
iOS之必会的13种设计模式介绍
<1>适配器模式 何为适配器模式? 适配器模式将一个类的接口适配成用户所期待的。一个适配器通常允许因为接口不兼容而不能一起工作的类能够在一起工作,做法是将类自己的接口包裹在一个已存在的类中。(联想一下现实生活中的各类适配,就比较容易理解了) 如何使用适配器模式? 以下情况比较适合使用 Adapter 模式: 当你想使用一个已经存在的类,而它的接口不符合你的需求; 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作; 你想使用一些已经存在的子原创 2020-10-20 11:03:44 · 712 阅读 · 0 评论 -
iOS中UITableView如何优化下载大量的图
tableview是iOS客户端常用控件,对于电商类及新闻展示类的app来说,提高页面流畅度是很有必要的。那么我今天就来提个方案具体思路就是判断内存中是否已经有图片,有就从内存中取,没有就下载,这样可以降低用户流量量费判断当前tableview的滑动状态和滑动动画如果tableview处于滑动状态和有滑动动画状态就不进行下载图片,显示占位图片,当不在处于滑动再下载图片,这样就可以让界面更流畅,也可以避免下载不在视图上和用户不关心的内容。#import"ViewController.h"原创 2020-10-19 18:40:24 · 682 阅读 · 0 评论 -
iOS之Method Swizzling 简单使用介绍
公司年底要在新年前发一个版本,最近一直很忙,好久没有更新博客了。正好现在新版本开发的差不多了,抽空总结一下。由于最近开发新版本,就避免不了在开发和调试过程中引起崩溃,以及诱发一些之前的bug导致的崩溃。而且项目比较大也很不好排查,正好想起之前研究过的Method Swizzling,考虑是否能用这个苹果的“黑魔法”解决问题,当然用好这个黑魔法并不局限于解决这些问题......需求要在所有页面添加统计功能,也就是用户进入这个页面就统计一次。我们会想到下面的一些方法:手动添加直接简单粗暴的在每原创 2020-10-14 11:23:49 · 586 阅读 · 0 评论 -
iOS之程序的证书和签名机制
非对称加密和摘要非对称加密的特性和用法非对称加密算法可能是世界上最重要的算法,它是当今电子商务等领域的基石。简而言之,非对称加密就是指加密密钥和解密密钥是不同的,而且加密密钥和解密密钥是成对出现。非对称加密又叫公钥加密,也就是说成对的密钥,其中一个是对外公开的,所有人都可以获得,称为公钥,而与之相对应的称为私钥,只有这对密钥的生成者才能拥有。公私钥具有以下重要特性: 对于一个私钥,有且只有一个与之对应的公钥。生成者负责生成私钥和公钥,并保存私钥,公开公钥 公钥是公开的,但不可能通过公原创 2020-10-12 21:58:09 · 688 阅读 · 0 评论 -
iOS之Category和Extention的区别
iOS中分类(category)和类扩展(Extension)的区别一、分类的定义:分类是OC中的特有语法,它是表示一个指向分类结构体的指针,它是为了扩展系统类的方法而产生的一种方式。二、分类的创建1、首先创建一个项目,然后新建一个Object-C File文件2、接着到了配置分类信息的界面:因为这里是创建分类,所以选择Categary,Class指的是需要扩展的系统类,file就填写分类的名称。3、最后就可以创建出一个标准的分类文件了。如图三、分类的作用:分类的作用就是在不修改原有类的原创 2020-10-11 16:07:55 · 389 阅读 · 0 评论 -
iOS开发一些高频使用的第三方库汇总
开发一般APP必备三方库,省力秘籍!!!本篇文章会经常更新最新常用的三方。1.网络请求库 AFNetworkinghttps://github.com/AFNetworking/AFNetworking2.图片缓存器 SDWebImagehttps://github.com/rs/SDWebImage3.下拉刷新上拉加载 MJRefreshhttps://github.com/CoderMJLee/MJRefresh4.JSON与Object互转 JSONModelhttps原创 2020-10-08 21:27:03 · 425 阅读 · 0 评论 -
iOS之面试高频常问必会的题目整理
Swift1、Swift中struct和class有什么区别?struct是值引用,更轻量,存放于栈区,class是类型引用,存放于堆区。struct无法继承,class可继承。2、Swift中的方法调用有哪些形式?答:直接派发、函数表派发、消息机制派发。派发方式受声明位置,引用类型,特定行为的影响。为什么Swift有这么多派发形式?为了效率。参考文章:深入理解 Swift 派发机制3、Swift和OC有什么区别?Swift和OC的区别有很多,这里简要总结这几条: .原创 2020-10-04 10:36:18 · 1730 阅读 · 0 评论 -
iOS 之App启动发生的那些事
(一)App的一些状态一般App一种状态切换另一种状态来响应系统发生的事件有很多不同的状态:Not running:App还没运行 Inactive:App运行在foreground但没有接收事件 Active:App运行在foreground和正在接收事件 Background:运行在background和正在执行代码 Suspended:运行在background但没有执行代码(二)App 在启动和结束等发生状态变化的代理方法delegate 和通知application:原创 2020-09-28 16:13:58 · 571 阅读 · 0 评论 -
iOS 自动布局框架– Masonry
1.Masory是什么:Masonry是一个对系统NSLayoutConstraint进行封装的第三方自动布局框架,采用链式编程的方式提供给开发者API。2.集成方式Masonry支持CocoaPods,可以直接通过podfile文件进行集成,需要在CocoaPods中添加下面代码:pod'Masonry'注意:新手使用在使用Masonry添加约束之前,需要在addSubview之后才能使用,否则会导致崩溃。3、mas_equalTo是一个Macro,mas_equalTo比较原创 2020-09-25 19:24:52 · 279 阅读 · 0 评论 -
Git仓库的基础命令使用整理
使用GitHub步骤:1.git的安装1.1 安装sudo apt-get install git 1.2 查看git的版本git --version 1.3 查看git的所有操作语句git2.git的全局配置(便于提交代码时,知道是谁提交的代码)2.1 用户名git config --global user.name xxx // xxx为用户名2.2 邮箱git config --global user.email XXX@163.com //原创 2020-09-20 20:35:19 · 140 阅读 · 0 评论 -
iOS14适配
适配1: Cell点击无效在14上可能出现点击cell上的视图无法响应的情况.原因:iOS14更改Cell视图布局.将contentView放在最上层,如果将视图加载在cell上,将会出现contentView遮罩,导致事件无法响应.是在此前关于 contentView 的声明注释中,官方已经明确建议开发者将 customView 放在 contentView 上,使 contentView 作为 UITableViewCell 默认的 fatherView。解决办法:1、可以将cell子视图加原创 2020-09-17 16:40:09 · 2130 阅读 · 0 评论 -
iOS多线程开发总结----面试基础
1 简介1.1 一些概念 系统中正在运行的每一个应用程序都是一个 进程(Process) ,每个进程系统都会分配给它独立的内存运行。也就是说,在iOS系统中中,每一个应用都是一个进程。 一个进程的所有任务都在 线程(Thread) 中进行,因此每个进程至少要有一个线程,也就是主线程。那多线程其实就是一个进程开启多条线程,让所有任务并发执行。 iOS App一旦运行,默认就会开启一条线程。这条线程,通常称作为“主线程”。在iOS应用中主线程的作用一般是: 刷新UI;...原创 2020-09-17 12:59:39 · 349 阅读 · 0 评论 -
iOS面试准备之ARC工作原理、Autorelease原理
ARCAutomatic Reference Counting,自动引用计数,即ARC,ARC会自动帮你插入retain和release语句。ARC编译器有两部分,分别是前端编译器和优化器。ARC 的工作原理大致是这样:当我们编译源码的时候,编译器会分析源码中每个对象的生命周期,然后基于这些对象的生命周期,来添加相应的引用计数操作retain和release代码。##前段编译器前端编译器会为“拥有的”每一个对象插入相应的release语句。如果对象的所有权修饰符是__strong,那么它就是原创 2020-09-14 12:38:24 · 676 阅读 · 0 评论 -
iOS 富文本简单使用
UITextView *upText = [[UITextView alloc] init]; upText.font = [UIFont systemFontOfSize:14.f]; upText.backgroundColor = [UIColor clearColor]; upText.textColor = [UIColor whiteColor]; upText.textAlignment = NSTextAlignmentLef.原创 2020-08-27 17:08:08 · 1050 阅读 · 0 评论 -
IOS上传APPStore 被拒问题汇总和解决方法说明
Guideline 2.1 - Information NeededWe have started the review of your app, but we are not able to continue because we need access to a video that demonstrates your app in use on an iOS device working with a child’s device.Next StepsTo help us proceed wit原创 2020-08-14 20:22:52 · 2499 阅读 · 0 评论 -
面试准备之计算机网络基础和操作系统基础
1、为什么要进行四次挥手?由于TCP是全双工的,因此每个方向都需要单独关闭。因为服务端的listen状态下的socket收到SYN报文的连接请求的时候,可以把ACK和SYN(ACK起应答作用,SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的SYN报文通知时,仅表示对方没有数据发送给你了,但未必你所有的数据都发送给对方了,所以你未必可能会马上关闭socket,即你可能会发送一些东西给对方后,再发送FIN报文给对方代表你同意关闭连接了,所以这里的ACK和SYN大多情况都是分开发送的。原创 2020-08-10 09:41:49 · 915 阅读 · 0 评论 -
软著之 如何整理程序代码至word文档
工具打开这个网页PlanetB;将你需要插入在word中的代码完整的复制到该网站提示的文本框内,选择你的代码类型,如C,C++,HTML等,并点击show Highlighted;该网页会自动将该代码生成到一个新的页面,此时ctrl+A全选,后ctrl+c复制到word中;其次 在word中插入一个1x1表格,设置底纹灰色,无边框!效果如图:...原创 2020-04-22 17:00:01 · 2475 阅读 · 1 评论 -
客户端国际化翻译 字符串整理之Python实现导入导出
公司的APP国际化需要翻译成18国语言,面对几十万行的代码上千个文件中的字符串太多,所有想到用python实现一下。我这里的需求是领导要求整理需要翻译的内容交给专业翻译去翻译。(以iOS工程为例)所以大致实现思想就是:1、读取工程文件 2、数据整理去除没有用的相关字符串,获得自己需要的。3、将获得的字符串放到Excel里保存。实现读取工程我们需要翻译的字符串:我这里的字符串宏定义了:pch文件中#define LocalString(x) NSLocalizedString(x,原创 2020-07-22 21:48:03 · 330 阅读 · 0 评论 -
IOS中的一系列 NS
iOS入门常用NS系列 所谓:丝之毫厘差之千里,所以在学习iOS的时候,编写程序一定要认真、认真、再认真。。。。1.NSNumber 数字对象的使用 一、数字对象的初始化二、数字对象的转换 编写事例:2.NSString 字符串的使用一、字符串的创建...原创 2018-10-08 15:46:35 · 376 阅读 · 0 评论 -
iOS开发常遇到的问题
一、Application windows are expected to have a root view controller at the end of application launch这种一般是旧的工程文件在Xcode中打开缺失了一些文件和需要更新,才出现的问题。解决方法:在Delegate中找到:- (BOOL)application:(UIApplication ...原创 2018-10-17 17:57:53 · 615 阅读 · 0 评论 -
iOS导航模式基础介绍
一、导航模型纲要首先我想简单介绍一下三种导航模式:1. 平铺页面平铺页面就像一叠卡片,页面通过滑动切换,通常视觉精美,没有滚屏。这种导航方式主要适用于只有一个主屏的简单应用。、2. 标签栏标签栏是我们最常见的导航模式,这类导航的最大优势就是让应用的主要功能一目了然。我们根据应用的功能类型和信息类型进行标签分类,每个标签对应的页面应该有自己独特的功能和内容。3. ...原创 2018-10-13 09:16:53 · 542 阅读 · 0 评论 -
iOS开发中的Cell的重用原理介绍
Cell的重用原理 iOS设备的内存有限,如果用UITableView显示成千上万条数据,就需要成千上万个UITableViewCell对象的话,那将会耗尽iOS设备的内存。要解决该问题,需要重用UITableViewCell对象 重用原理:当滚动列表时,部分UITableViewCell会移出窗口,UITableView会将窗口外的UITableViewCell放入一个对象池中,...原创 2018-10-19 09:35:46 · 432 阅读 · 0 评论 -
iOS入门基础知识笔记
一、@property中属性关键字介绍1、strong:释放旧对象将旧对象的值赋予输入对象,再提高输入对象的索引计数为1,此关键字经常使用。2、weak:不增加引用计数,不持有对象,因此也不能决定对象释放,对比assign的一个好处是,当对象消失时指针自动归为nil。3、assign:适用于基础数据类型(NSInteger、CGFloat、...)不增加引用计数。4、copy:建立...原创 2018-10-19 16:54:48 · 259 阅读 · 0 评论 -
iOS中视图的介绍与使用
一、视图的创建 我们在使用视图之前必须要先进行创建。 在创建视图时,可以采用手动创建视图, 使用代码创建视图这两种方法。1、我们可以手动创建一个视图,为了让大家 能够看清我们的视图,我们将创建的视图 背景调整为红色。创建步骤,首先我们将 ViewController.xib文件单击打开,在 “Objects”窗口中选择“View”将其拖到 “interface Builder”...原创 2018-10-25 10:31:55 · 680 阅读 · 0 评论 -
iOS视图中的知识点
一、NavigationBar 全透明。全屏背景图片 self.navigationController.navigationBar.shadowImage = [UIImage new]; [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMe...原创 2018-10-26 17:16:22 · 165 阅读 · 0 评论