
OC
文章平均质量分 90
OC
卡卡西Sensei
这个作者很懒,什么都没留下…
展开
-
OC 中property属性详解(assign , retain , copy , strong,weak,readonly , readwrite , atomic , nonatomic)
Objective-C 属性特性@property详解 目录Objective-C 属性特性@property详解 1.assign2.retain3.copy4.strong5.weak6.readonly7.readwrite8.atomic9.nonatomic1.assignsetter方法将传入参数赋值给实例变量,仅设置变量...原创 2019-01-17 17:08:58 · 4899 阅读 · 2 评论 -
iOS 面试常问考点
1、栈与队列的区别栈(Stack):限定只能在表尾(栈顶)进行删除和插入操作的线性表。我们把允许删除的一端称为栈顶,另一端称为栈低。不含任何元素的栈称为空栈。栈又称为(Last In First Out)的线性表。栈的插入操作,叫做进栈,栈的删除叫做出栈。队列(Queue):是只允许在一端进行插入操作,在另一端进行删除操作的线性表。队列是一种特殊的线性表,允许插入的一端为表尾,允许删除的一...原创 2019-01-17 15:32:32 · 666 阅读 · 0 评论 -
NSTimer 的正确用法你真的知道吗?
NSTimer你真的会使用吗?相信每个人都会很自信的说:知道啊!这简单的很,但是你确定你用对了吗?1. NSTimer的使用A: NSTimer你真的会使用吗?NSTimer的循环引用你知道吗?B: 这还不简单,不就是下面????这种使用吗,So easy 啊!self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:原创 2021-11-25 12:42:21 · 2428 阅读 · 0 评论 -
iOS底层探索之KVC
前言在iOS的面试中,KVC几乎是必问的面试题之一,那么到底什么是KVC,KVC的原理是什么呢?KVC又称键值编码 (Key-Value-Coding),在iOS开发中是一个比较常见的技术点,相信很多开发人员都使用过KVC,其主要的两个方法就是如下两个,分别对应设置值和取值:- (void)setValue:(nullable id)value forKey:(NSString *)key;- (nullable id)valueForKey:(NSString *)key;1. KVC简介原创 2021-08-02 15:45:15 · 520 阅读 · 0 评论 -
iOS 面试题分析(二)
1.回顾在之前的博客中,对OC底层进行了一系列的源码的探索分析,上一篇博客也对一些面试题进行了回答和分析,本篇博客继续面试题分析!2. iOS面试题分析2.1 ⽅法的本质?sel是什么?IMP是什么?两者之间的关系⼜是什么?方法的本质:发送消息流程快速消息查找 (objc_msgSend),cache_t 缓存查找消息。慢速消息查找(lookUpImpOrForward)递归自己以及父类,自己找不到去父类缓存中找,依然找不到会进行父类慢速查找,直到找到nil。查找不到消息进行动态方法解原创 2021-07-30 12:04:04 · 347 阅读 · 0 评论 -
iOS 面试题分析(一)
目录1.回顾1.1 补充2. iOS面试题分析2.1 load与c++构造函数调用顺序2.2 runtime是什么?2.3 initialize调用顺序2.4 同名分类方法的调用顺序2.5 分类和扩展的区别?1.回顾在之前的博客中,对OC底层进行了一系列的探索分析,相信小伙伴们都学到了一定的知识,但是底层源码分析比较枯燥,那么本次就对一些面试题进行分析。1.1 补充在上篇博客iOS底层探索之类的加载(四):类的关联对象AssociatedObject中主要讲了类的扩展和类的关联对象,移除关联还没有讲原创 2021-07-29 13:52:59 · 419 阅读 · 0 评论 -
iOS底层探索之类的结构—cache分析(下)
总结cache是方法缓存,是用散列表来缓存曾经调用过的方法,可以提高方法的查找速度原创 2021-06-27 07:24:39 · 505 阅读 · 2 评论 -
iOS底层探索之类的结构—cache分析(上)
在iOS底层探索之类的结构(上) 中介绍了isa,在iOS底层探索之类的结构(中)介绍了bits原创 2021-06-25 17:25:12 · 642 阅读 · 2 评论 -
iOS底层探索之类的结构(下):objc_setProperty
在之前的几篇博客里面,已经介绍了,类的底层结构,还有isa的走位流程,元类的继承链,对象方法,类方法的存放位置,以及如何通过lldb获取成员和属性、对象方法,类方法。iOS底层探索之类的结构(上)iOS底层探索之类的结构(中)本篇博客主要做一些补充和扩展。成员变量和属性开发年限比较久的iOS程序员,都知道在iOS5之前,经常看到一个大括号里面定义了成员变量,同时用了@property声明,而且还在@implementation中使用@synthesize方法。其实,发生这种状况根本原因是苹果将默原创 2021-06-23 17:15:59 · 668 阅读 · 2 评论 -
iOS底层探索之类的结构(中):bits
在一篇博客里面iOS底层探索之类的结构(上)已经大致的,了解了类的结构类的结构struct objc_class : objc_object { objc_class(const objc_class&) = delete; objc_class(objc_class&&) = delete; void operator=(const objc_class&) = delete; void operator=(objc_class&&) =原创 2021-06-22 17:54:22 · 679 阅读 · 0 评论 -
iOS底层探索之类的结构(上):ISA
回顾在之前的几篇博客里面,我们知道了对象的本质是结构体(iOS底层探索之对象的本质和类的关联特性initIsa(上)),也了解了结构体的内存对齐(结构体底层探索),也分析了下alloc的底层的源码(alloc底层探索),也知道了实例化一个对象,底层是通过isa和类进行关联的。但一直都没有探索下类,那么接下来,我们就去底层看看类,揭开类神秘面纱。类的猜想首先看看下面????这个,我们实例化一个对象,在断点处进行调试通过打印对象stu的地址,得到ISA,然后和掩码0x00007ffffffffff8作原创 2021-06-22 12:05:27 · 711 阅读 · 0 评论 -
iOS 应用的启动流程和优化详解
目录一、应用启动流程Mach-OVirtual MemoryPage fault二、获取启动流程的时间消耗三、改善APP的启动四、+load与+initialize1、+load2、+initialize3、两者的异同4、使用场景Rebase && Bind启动时间优化启动时间五、小结Main函数之前Initializers一、应用启动流程1、整体过程(1)解析Info.plist 加载相关信息,例如如闪屏转载 2021-05-11 09:12:30 · 850 阅读 · 0 评论 -
iOS NSString URLencode
1.写在前面上周公司的一个项目,是GET方式的请求,需要在请求的Url中拼接,特殊字符的字符串,或者中文字符,作为参数传递,这就需要用urlencode处理一下。当然,有时作为Post参数传递,也有需要urlencode处理的情况,具体看自己的业务要求。2.iOS9.0之前+ (NSString*)JP_URLEncodedString:(NSString*)unencodedString { NSString *encodedString = (NSString *) CF.原创 2021-03-30 16:37:34 · 1714 阅读 · 0 评论 -
iOS中使用URL Scheme进行App跳转
iOS中使用URL Scheme进行App跳转,比如在应用内提示安装另一个应用时就以url打开safari,然后打开app store那样1.URL Scheme的作用我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app之间互相调用而设计的。我们可以通过系统的OpenURL来打开该app,并可以传递一些参数。例如:你在Safari里输入www.alipay.com,就可以原创 2020-12-24 16:12:56 · 7459 阅读 · 0 评论 -
iOS14 UIDatePicker的变化
iOS14 UIDatePicker的变化手机系统更新到iOS14之后,在选择日期的时候变成这样了更新之前是这样的这是因为UIDatePicker 增加了pickerStyle,需要设置preferredDatePickerStyle = UIDatePickerStyleWheels才会和以前一样,并且现在对frame的宽高设置已经不生效了,会采用系统默认的宽高。preferredDatePickerStyle属性:typedef NS_ENUM(NSInteger, UI.原创 2020-11-06 17:35:17 · 6143 阅读 · 0 评论 -
iOS获取手机卡IMSI信息
在日常开发中,我们都需要对用户登录做一些限制,对用户做一些唯一标识,或者免密码登录的操作。一般都是获取UUID、UDID、IDFA....等方法,但都是不能保证是唯一的,比较靠谱的方法是利用钥匙串(keyChain)保存UUID,每次都从keyChain里面取。但是公司有的项目,想利用手机卡的信息,来免密登录,保证用户的唯一性,安卓直接可以读取IMSI信息,只要把卡换到新手机也一样可以登录,就不受设备的限制了。1.什么是IMSI信息名词解释IMSI:International Mobil.原创 2020-09-17 10:34:56 · 9185 阅读 · 0 评论 -
iOS APP如何跳转小程序?友盟分享到微信的时候调不起微信是什么原因?
上周公司有个老项目,需要APP跳转到微信小程序,我看了下微信的文档,照着写了下,发现没有用,方法找不到后来下载了微信的SDK,发现和原来的友盟分享的冲突了,友盟分享里面也集成了微信的SDK,所以两者去掉一个就可以了,我选择去调微信的,保留友盟里面的,但是工程太老了,之前友盟的里面的微信的SDK已经很旧了,没有包括小程序的代码,所以必须要更新友盟的SDK。更新完了,发现原来的代码报错了,新旧对比如下1.设置友盟appkey对比老方法:[[UMSocialManager d...原创 2020-08-26 14:57:05 · 2247 阅读 · 0 评论 -
iOS 13 暗黑模式的适配
苹果iOS13 新出了暗黑模式,我们在开发的时候应该如何去适配呢?下面简单说说如何适配吧!在iOS13之前我的使用的UIColor就是普通的颜色,但是在iOS13开始UIColor就是一个动态的颜色了,会跟随系统的模式改变颜色iOS 13系统提供了一些基本的动态颜色@property (class, nonatomic, readonly) UIColor *systemBrownColor API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNA原创 2020-07-29 14:47:45 · 742 阅读 · 0 评论 -
iOS 单个页面设置横屏
我们在开发中,有些时候需要设置横屏浏览,特别是视频播放页面是经常用的到横屏,也是横屏和竖屏之间来回的切换运用最多的。那么我们应该怎么设置和适配横屏呢???1.进入页面默认横屏效果设置页面屏幕屏幕方向 设置页面屏幕支持的方向- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { re...原创 2020-01-15 15:49:53 · 4269 阅读 · 2 评论 -
iOS WKWebView与JS交互传值
iOS WKWebView与JS交互传值,之前的一篇文章已经介绍过了https://blog.youkuaiyun.com/zjpjay/article/details/103310279NSString *jsStr = [NSString stringWithFormat:@"ocSetDeviceCode('%@')",[ZJPNetWork getUUID]]; [self.webVi...原创 2019-12-25 11:25:51 · 3064 阅读 · 0 评论 -
iOS 解决报错 dyld: Library not loaded: @rpath/xxx.framework Reason: image not found
最近在做接入大华平台的 SDK 的时候遇到了一个问题,我按照接入文档导入了大华的 SDK,运行直接奔溃了,无语了奔溃报错信息如下:XCODE 控制台打印信息如下:dyld: Library not loaded: @rpath/DHMediaPlayFramework.framework/DHMediaPlayFramework Referenced from: /priva...原创 2019-12-18 14:51:17 · 6979 阅读 · 2 评论 -
iOS 刘海屏 隐藏横条 home键
自动隐藏 home 键,屏幕没有触摸操作就会自动隐藏,一旦有任何触屏操作就显示了-(BOOL)prefersHomeIndicatorAutoHidden { return YES;}//MARK:隐藏home键原创 2019-11-30 18:04:55 · 2062 阅读 · 0 评论 -
iOS WKWebview JS与OC互相调用,传递数据
前言:WKWebView是一个展示交互式web内容的视图,支持iOS8.0及macOS10.10以上的系统。提供了替换UIWebView的组件, WKWebView解决了UIWebView加载速度慢,占用内存多,优化困难等问题,可以说WKWebView是目前App内部加载网页的最佳选择。目录1.JS 与 OC 交互2.OC 向 JS 传递值1.JS 与 OC 交互添加注...原创 2019-11-29 16:02:15 · 8575 阅读 · 0 评论 -
iOS 不同数据类型存入可变数组
1.我们都知道NSMutableArray可变数组里面需要放的数据类型是一个类,但是普通数据类型不是类,我们可以用NSNumber类来包装成类(即以对象形式实现)进行存储。 NSMutableArray *array = [[NSMutableArray alloc] init]; BOOL isYes = NO; int a = 10; l...原创 2019-05-15 10:12:25 · 1368 阅读 · 0 评论 -
iOS 数组与字符串的相互转化
1.字符串转化为数组NSString *string = @"a,b,c,d";NSArray *array = [string componentsSeparatedByString:@","];2.数组转化为字符串NSArray *array = @[@"a",@"b",@"c",@"d"];NSString *string = [array componentsJoin...原创 2019-05-15 14:43:13 · 3585 阅读 · 0 评论 -
iOS 开发应用内跳转到App Store
1.离开本应用跳转到App StoreNSString *url = @"https://itunes.apple.com/app/apple-store/id1457293407?mt=8";[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];2.不离开本应用,应用内跳转到Ap...原创 2019-05-22 15:30:18 · 4902 阅读 · 0 评论 -
iOS UITableView设置UITableViewStyleGrouped模式下section间多余间距的处理
UITableView 有两种模式:1.UITableViewStylePlain:设置分组,组头会悬浮2.UITableViewStyleGrouped:设置分组,组头不会悬浮在UITableViewStyleGrouped模式下,组与组之间会有灰色的多余的间隙,这个很烦人解决办法如下:1.设置组尾// MARK:组尾- (nullable UIView *)...原创 2019-06-05 14:33:41 · 4810 阅读 · 0 评论 -
UITableView分割线
UITableView添加footerView 后 最后一行分割线无法显示代码如下:重写cell 的layoutSubviews方法- (void)layoutSubviews{ [super layoutSubviews]; for (UIView *subview in self.contentView.superview.subviews) { ...原创 2019-06-08 20:01:15 · 1322 阅读 · 0 评论 -
iOS 实现语音播报
最近网上 “支付宝到账100万元”的铃声很原创 2019-06-19 18:40:48 · 2605 阅读 · 0 评论 -
iOS11 tableview左滑到底禁用删除
在iOS8之后,苹果官方增加了UITableVIew的右滑操作接口,即新增了一个代理方法(tableView: editActionsForRowAtIndexPath:)和一个类(UITableViewRowAction),代理方法返回的是一个数组,我们可以在这个代理方法中定义所需要的操作按钮(删除、置顶等),这些按钮的类就是 UITableViewRowAction/** *...原创 2019-06-11 11:39:46 · 3265 阅读 · 0 评论 -
iOS11 设置大标题
iOS11 导航栏标题样式改变了,可以设置大标题了if (@available(iOS 11.0, *)) { self.navigationController.navigationBar.prefersLargeTitles = YES; self.navigationController.navigationItem.largeTitleD...原创 2019-08-27 12:24:03 · 1709 阅读 · 0 评论 -
搜索框 UISearchBar的取消按钮改为中文
第一种方法:[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]].title = @"取消";第二种方法:[self.searchBar setValue:@"取消" forKey:@"_cancelButtonText"];第三种方法:遵守UISearchB...原创 2019-08-27 16:52:42 · 1294 阅读 · 1 评论 -
iOS 获取日期
1.获取 年月日 NSDateFormatter *formater = [[ NSDateFormatter alloc] init];[formater setDateFormat:@"yyyy-MM-dd"];// 时间格式NSDate *currentDate = [NSDate date];//获取当前日期NSString *currentDateStr ...原创 2019-04-30 18:11:19 · 600 阅读 · 0 评论