
iOS基础
加菲猫的小窝
这个作者很懒,什么都没留下…
展开
-
解决Masonry 中equalTo和mas_equalTo 乱用的问题
其实 mas_equalTo是一个MACRO,比较的是值,equalTo比较的是view。注意如下方式引入会和自定义View约束冲突引发异常!所以还是建议老老实实的不要用如下宏定义;// 只要添加了这个宏,就不用带mas_前缀2 #define MAS_SHORTHAND3 // 只要添加了这个宏,equalTo就等价于mas_equalTo4 #define MAS_SHORTHAND_GLOBALS5 // 这个头文件一定要放在上面两个宏的后面6 #import "Masonry.h".原创 2021-06-15 16:25:51 · 645 阅读 · 0 评论 -
+ (void)load和initialize的区别
load函数调用特点如下:当类被引用进项目的时候就会执行load函数(在main函数开始执行之前),与这个类是否被用到无关,每个类的load函数只会自动调用一次.由于load函数是系统自动加载的,因此不需要调用父类的load函数,否则父类的load函数会多次执行。1.当父类和子类都实现load函数时,父类的load方法执行顺序要优先于子类2.当子类未实现load方法时,不会调用父类load方法3.类中的load方法执行顺序要优先于类别(Category)4.当有多个类别(Category)都实转载 2021-04-06 18:58:00 · 331 阅读 · 0 评论 -
SEL类型整理
Objective-C在编译的时候,会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个ID,这个ID就是SEL类型的。我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的ID都是相同的。就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同那么ID就是一样的。我们可以方便的通过方法的名字,获取到方法的ID也就是我们所说的SEL,反之亦然。具体的使用方法如下:1 SEL 变量名 = @selector(方法名字);2 SEL..原创 2021-01-15 15:22:54 · 307 阅读 · 0 评论 -
NSObject常用方法总结
-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例 -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例 -(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递) +(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处在于,原创 2021-01-15 14:03:56 · 356 阅读 · 0 评论 -
IOS 处理空字符串
一、区别: nil、Nil、NULL和[NSNull null]的区别1.nil当一个对象置为nil时,这个对象的内存地址就会被系统收回。置空之后是不能进行retain,copy等跟引用计数有关的任何操作的。2.Nilnil完全等同于Nil,只不过由于编程习惯,人们一般把对象置空用nil,把类置空用Nil。3.NULL这个是从C语言继承来的,就是一个简单的空指针4.[NSNull null]这个才是重点:[NSNull null]和nil的区别在于,nil是一个空对象,已经完原创 2021-01-06 16:49:18 · 475 阅读 · 0 评论 -
关联对象 AssociatedObject 完全解析
关联对象 AssociatedObject 完全解析 关联 category与associative作为objective-c的扩展机制的两个特性 ✓ category即类型,可以通过它来扩展方法 ✓ associative,可以通过它来扩展属性 ✓ 在iOS开发中,可能category比较常见,相对的associative,就用的比较少,要用它必须使用的头文件,然后就可以自由使用objc_getAssociatedObject以及objc_setAssociatedObject原创 2021-01-04 19:49:52 · 346 阅读 · 0 评论 -
iOS-load/initialize
Object-C源码解析 1.你真的了解 load 方法么? load 作为 Objective-C 中的一个方法,与其它方法有很大的不同。它只是一个在整个文件被加载到运行时,在 main 函数调用之前被 ObjC 运行时调用的钩子方法。其中关键字有这么几个 ✓ 文件刚加载 ✓ main 函数之前 ✓ 钩子方法 调用的顺序 ✓ 1.父类先于子类调用 ✓ 2.类先于分类调用 load 的应用 ✓ load 可以说我们在日常开发中可以接原创 2021-01-04 19:06:22 · 260 阅读 · 0 评论 -
iOS-NSTimer 使用
1.NSTimer的创建方法// 创建一个定时器,但没有添加到运行循环,我们需要在创建定时器后手动的调用 NSRunLoop 对象的 addTimer:forMode: 方法。+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo; // 创建一个timer并把它指定到一个默认的runloop模式中,并且在 TimeIn.原创 2020-12-21 18:16:04 · 613 阅读 · 0 评论 -
NiiOS-iOS复习及在学习进度更新
仓库地址NiiOS(一) 简介 & 规划i、「目前主要做iOS客户端开发」一直没有好好沉淀记录下自己学习东西;这里把目前主要做的iOS端常用知识点总结下,便于后续开发拿来直接用;ii、后续会陆续贴出完整的复习笔记,有需要联系作者;(十四) ##### (十三) iOS Runtime复习001-iOS 开发:『Runtime』详解(一)基础知识 见:有道云笔记、总结思维导图应用案例:-proj_2020/006Runtime002-iOS 开发:『Runtime』详解(二原创 2020-11-23 16:53:36 · 842 阅读 · 0 评论 -
iOS14.2 真机 调试包-by:nixs
调试包iOS 14.2iOS 14.1iOS 14.0Tips: iOS 13.1.1(x) 第三位版本号变化为小版本,使用 iOS 13.1 的调试包即可注意:iOS 14 只能在 Xcode 12 及以上版本调试,Xcode 11+ 将无法调试下载链接平台 备注 GitHub 支持单个文件下载 百度网盘 提取码: 7b3t 如何导入调试包打开 Finder按下: Command⌘+Shift⇧+G输入:/Applications/Xcode.转载 2020-11-23 10:02:26 · 665 阅读 · 0 评论 -
iOS:KVO的概述与使用-by:nixs
一,概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。二,使用方法系统框架已经支持KVO,所以程序员在使用的时候非常简单。1. 注册,指定被观察者的属性,2. 实现回调方法3. 移除观察三,实例:假设一个场景,股票的价格显示在当前屏幕上,当股票价格更改的时候,实时显示更新其价格。1.定义数据模型(为了使用KVC)原创 2020-11-19 16:07:21 · 259 阅读 · 0 评论 -
KVC、KVO探识(一)KVO和KVO的详细使用
前言最近一直在做原型图,中间有两天没有写简书了。感觉心里面特别不是滋味。所以今天好不容易忙中偷闲,所以今天必须写几篇简书,安慰一下自己的内心。于是今天给大家分享一下KVC和KVO的简单用法,随后会更加深层次的去写一系列的简书,去深层次的讲解KVC和KVO。KVC用法KVC也就是key-value-coding(键值编码),简而言之就是通过key值去进行赋值和取值。主要是是操作对象的属性。以下是几个常用的方法:setValue:forKey:(为对象的属性赋值) setValue: forK转载 2020-11-12 20:17:53 · 508 阅读 · 0 评论 -
iOS开发系列----OC(文件管理类、文件句柄类)
转载链接1.NSString和NSData互相转化NSString * str = @"hello世界";NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];NSLog(@"数据大小:%lu",data.length);NSLog(@"字符串长度:%lu",str.length);//一个汉字的长度是1,占3个字节NSString * strData = [[NSString alloc] initWithData:原创 2020-11-09 20:26:54 · 365 阅读 · 0 评论 -
iOS 退出应用
用动画的形式退出应用- (void)viewDidLoad { [super viewDidLoad]; UIButton *btn = [UIButton buttonWithType:(UIButtonTypeCustom)]; [btn setTitle:@"退出" forState:(UIControlStateNormal)]; [btn setTitleColor:[UIColor whiteColor] forState:(UIControlStateN.原创 2020-09-16 17:42:00 · 531 阅读 · 0 评论 -
iOS Masonry 布局- UIScrollView/Masonry自动布局对UIScrollView的内容自适应
UIScrollView使用Masonry布局最大的难点在于如何让子视图追随ScrollView滑动。目前使用最广泛的解决方式是为滑动视图添加一个过渡视图,之后将所有的子视图添加到过渡视图上,然后分别设置过渡视图与滑动视图约束(注:竖向滑动时,需将过渡视图的宽度固定;横向滑动时,需将过渡视图的高度固定)、过渡视图与第一个子视图边缘约束、过渡视图与最后一个子视图边缘约束。本示例以垂直滑动为例: UIScrollView *scrollView = [[UIScrollView alloc]原创 2020-09-02 14:25:31 · 3728 阅读 · 0 评论 -
(iOS) IPTools.h/m - 获取ip地址(ipv4/ipv6)
//// IPTools.h// IPV6Demo//// Created by ai-nixs on 2020/5/24.// Copyright © 2020 nixs. All rights reserved.//#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface IPTools : NSObject/// 获取IP地址 ipv4/ipv6 by:nixs 2020年05.原创 2020-05-25 09:09:57 · 751 阅读 · 0 评论 -
LaunchScreen作为启动图设置,修改无效的解决方案
LaunchScreen作为启动图设置,修改无效的解决方案原有的推流APP用launchScreen做的启动图,现在要修改一张,发现修改无效。当前测试的方法有1,重启Xcode 卸载app 清楚xcode缓存2,修改launchScreen.storyboard上imageView中的图片3, 修改图片名效果:已删除原启动图,现启动图变为白板,新的启动图无法展示https://www.jianshu.com/p/fb70d15b50d8参考以上文章,重启手机后就好了,可能原因为app在第原创 2020-05-12 15:18:22 · 1431 阅读 · 0 评论