自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OC 单例对象的创建及释放

OC 单例对象的创建即释放

2022-10-14 13:32:12 1699 1

原创 iOS ScrollView嵌套tableView联动滚动的思路分析

iOS ScrollView嵌套tableView联动滚动的思路分析

2022-09-21 14:37:22 3510

原创 Swift 隐藏NavigationBar 和 toolbar 下面的黑线

Swift 隐藏NavigationBar 和 toolbar 下面的黑线

2022-09-20 11:56:42 1461 2

原创 iOS UIButtonConfiguration的简单使用

iOS UIButtonConfiguration的简单使用

2022-09-09 18:57:41 2296

原创 iOS14以上,UITableViewCell中的按钮,点击无效

iOS14以上,UITableViewCell中的按钮,点击无效。

2022-08-26 17:20:09 2122

原创 iOS 创建 pch 文件

iOS 创建 pch 文件

2022-08-20 15:36:49 2115

原创 iOS - Unknown type name “NSString“解决方案

iOS - Unknown type name "NSString"解决方案

2022-08-20 11:38:12 1999

原创 iOS13 tabBar 设置背景色失效

iOS13 tabBar 设置背景色失效

2022-08-06 18:07:59 1431

原创 iOS13新增SceneDelegate文件适配

iOS13 新增SceneDelegate文件适配

2022-08-06 17:41:34 1764

原创 iOS 使用runtime 解决按钮重复点击的问题

iOS 使用runtime 解决按钮重复点击的问题。

2022-08-04 16:31:15 1362

原创 ios 使用runtime实现自动解归档

iOS 使用runtime实现自动解归档

2022-08-03 17:09:04 335

原创 iOS 使用runtime动态添加方法

iOS 使用runtime动态添加方法。

2022-08-03 12:33:16 679 2

原创 iOS 通过runtime关联对象给分类动态创建成员变量

iOS 通过runtime给分类添加动态属性。

2022-08-03 11:26:17 669

原创 iOS 类方法和对象方法的区别

iOS 类方法和对象方法的区别。

2022-07-30 18:03:55 516

原创 iOS 运行时动态交换两个方法(Method-Swizzling)

使用 Method-Swizzling 动态交换两个方法

2022-06-27 16:28:13 1635 1

原创 iOS 13.0 暗黑模式的适配

1、 图片适配2、颜色适配(文字颜色,背景颜色)3、状态栏适配4、关闭暗⿊模式(或者关闭某⼀个页⾯的暗⿊模式)5、模式切换代理系统提供的动态颜色有: labelColor、systemBackgroundColor、secondarySystemBackgroundColor、tertiarySystemBackgroundColor、systemGroupedBackgroundColor、secondarySystemGroupedBackgroundColor、tertiarySystemGroupe

2022-06-27 15:38:23 3453

原创 iOS 13 navigationBar的背景色失效

升级到iOS 13 NavigationBar 设置背景色失效

2022-06-16 17:57:29 2538

原创 iOS ‘windows‘ is deprecated: first deprecated in iOS 15.0

获取 keyWindow

2022-06-16 17:31:54 2193

原创 Swift 协议

协议的语法自定义类型声明时,将协议名放在类型名的冒号之后来表示该类型采纳一个特定的协议。多个协议可以用逗号分开列出。若一个类拥有父类,将这个父类名放在其采纳的协议名之前,并用逗号分隔。protocol SomeProtocol { //定义了一个协议}protocol AnotherProtocol { //定义了一个协议}protocol OneProtocol: SomeProtocol, AnotherProtocol { //定义了一个协议 OneProto

2022-05-27 18:07:03 1046

原创 Swift 扩展

扩展的概念扩展就是向现有的类、结构体、枚举类型、或协议添加新的功能。扩展可以对一个类型添加新的功能,但是不能重写已有的功能。扩展和 Objective-C 中的 category 类似。(与 Objective-C 的分类不同的是,Swift 的扩展没有名 字。)扩展的功能添加计算实例属性和计算类型属性定义实例方法和类型方法提供新初始化器定义下标定义和使用新内嵌类型使现有的类型遵循某协议扩展可以向一个类型添加新的方法,但是不能重写已有的方法扩展的语法声明扩展使用 exte

2022-05-27 16:21:28 471

原创 iOS 绘制图片水印,并将图片保存到相册中

UIImage *image = [UIImage imageNamed:@"花"]; //开启图片类型的图形上下文 // opaque: 不透明度 YES:不透明 NO:透明 // size: 图片的的大小 // scale: 是否缩放,0 为不缩放 UIGraphicsBeginImageContextWithOptions(image.size, NO, 0); //把图片画上去 [image drawAtPoint:CGPointZero];.

2022-05-06 17:00:16 614

原创 iOS 应用沙盒以及应用数据的存储方式

一、应用沙盒1、概念:每个iOS应用都有自己的应用沙盒(应用沙盒就是应用的文件夹)。与其他应用系统隔离,应用必须待在自己的沙盒里,其他应用不能访问该沙盒。2、 如何去访问iOS应用的沙盒?执行这个语句,可以打印应用沙盒的路径:NSString *str = NSHomeDirectory();​ NSLog(@“沙盒路径:%@”,str);可以发现每次打印的沙盒路径都是变化的,但是访问的还是同一个应用的沙盒路径。3、可以发现访问的应用沙盒的系统文件目录。假设应用的名

2022-04-15 18:25:11 4062

原创 iOS 导航控制器栈和视图控制器的生命周期

1、导航控制器栈就是用来保管导航控制器内所有的子控制器。导航控制器栈中的控制器是以先进后出的顺序出入栈的。每次push到一个控制器,就会将这个控制器添加到这个导航控制器栈中,执行pop方法时,将当前这个控制器释放并销毁,然后就会显示要pop到的目标控制器。利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的“设置”应用。2、视图控制器view的生命周期1、场景:FirstViewController跳转到SecondV

2022-04-15 17:20:30 448

原创 iOS 创建控制器的三种方式

1、纯代码#pragma mark - 纯代码创建控制器的方式- (void)code { FirstViewController *firstVC = [[FirstViewController alloc]init]; _window.rootViewController = firstVC;}2、xib1> 三个 xib 文件名2> 加载 xib 的代码#pragma mark - xib创建控制器的方式- (void)xib { //1.

2022-04-15 16:58:04 550

原创 iOS 加载自定义控制器

一、步骤:1、将程序中默认生成的文件 ViewController.h/m 和 Main.storyboard 删除。2、将配置文件中默认加载的 storyboard 文件名删除。3、加载自定义控制器的步骤:在应用程序代理方法【应用加载完毕的方法里面】1> 创建窗口对象,同时指定他的大小。2> 创建控制器对象,并将它作为窗口对象的根控制器。3> 将这个窗口对象作为应用程序的主窗口,并且设置可见。//应用程序加载完毕- (BOOL)applicat

2022-04-15 16:50:05 479

原创 OC中const关键字

1、const 的作用1、const的意思就是常量,其作用也是修饰过的数据不能再改变。2、被const修饰的变量就会变成只读的,也就是变成了常量。//被 const 修饰后的变量都变成了只读的,也就是常量int const number = 1234567788; // const 修饰基本数据类型//还可以这样写// const int num = 123456788;number = 23456667; //此时报错,因为被 const 修饰的变量只读,不能设置3、const

2022-04-09 09:52:03 555

原创 OC中return、continue和break的区别

1、return:跳出整个方法作用域// return: 跳出整个方法(作用域)for (int i = 0; i < 5; i++) { if (i == 2) { return 0; } NSLog(@"%d",i);}/**01*/2、break:跳出整个循环,循环方法外还可以执行// break: 跳出整个循环,循环方法外还可以执行 for (int i = 0; i < 5; i++) { if (i =

2022-04-08 17:10:16 842

原创 OC 字符串类型和基本数据类型的转换

1、字符串类型转换为其他类型@property (readonly) double doubleValue;@property (readonly) float floatValue;@property (readonly) int intValue;@property (readonly) NSInteger integerValue @property (readonly) long long longLongValue @property (readonly) BOOL boolValue

2022-04-08 15:35:35 1424

原创 OC 中的自动引用计数 ARC

1、什么是 ARCAutomatic Reference Counting ,自动引用计数,ARC系统自动的帮我们计算对象的引用计数器的值2、ARC 的基本原则ARC 是编译器机制。在编译器编译代码的时候,会在合适的位置插入 retain、release、autorelease 代码。不需要程序员手动的写入 retain、release、autorelease3、ARC 机制下,对象何时被释放?本质:对象的引用计数器为 0 的时候,自动释放。表象:只要没有强指针指向这个对象,这个对象

2022-03-31 11:34:37 3012

原创 OC #import 和 @class 的区别以及对象相互引用的解决方案

1、当两个类相互包含的时候,比如 Person.h 中包含 Book.h,而 Book.h 中又包含 Person.h。这个时候就会出现循环引用的问题,造成程序无限递归,从而导致编译无法通过。2、解决方案其中一边不要使用 #import 来引入对方的头文件。而是使用 @class 类名;来标注这是一个类。这样就可以在不引入对方头文件的情况下,告诉编译器这是一个类。在 .m 文件中再 #import 对方的头文件,这样就可以使用了3、#import 和 @class 的区别#import 是将

2022-03-31 09:32:56 499

原创 OC @property 的参数

1、与多线程相关的两个参数: atomic、nonatomicatomic: 默认值。如果写 atomic,这个时候生成的 setter 方法的代码就会被加上一把线程安全锁。(特点: 安全、效率低下)nonatomic:如果写 nonatomic,这个时候生成的 setter 方法的代码不会加线程安全锁。(特点: 不安全、效率高)2、与生成的 setter 方法的实现相关的参数: assign、retainassign:默认值。生成的 setter 方法的实现就是直接赋值retain:生成的

2022-03-31 07:31:17 2953

原创 判断对象是否是指定类的对象:isKindOfClass

1、判断对象中是否有这个方法可以执行Person *p1 = [Person new];BOOL res = [p1 respondsToSelector:@selector(study)];NSLog(@"res = %d",res);2、判断该类中是否有这个对象方法可以执行(不判断是否有类方法)BOOL res3 = [Person instancesRespondToSelector:@selector(sayHi)];NSLog(@"res3 = %d",res3);3、判断该对象

2022-03-30 16:41:42 433

原创 OC id、NSObject 和 instancetype 的异同点

id 和 NSObject 的相同点都是万能指针,都可以指向任意的 OC 对象。id 和 NSObject 的不同点通过对象调用方法时,NSObject 会做编译检查,而 id 不会做编译检查。id 只能调用对象的方法,不能使用点语法,使用点语法会编译报错。注意: id 是 typedef 自定义类型,定义的时候已经 加 * 了,因此声明 id 指针的时候不需要再加 * 了。声明一个万能指针,使用 id 而不是 NSObject。instancetype代表方法的返回值是当前这

2022-03-30 16:30:10 310

原创 OC 中结构体和类的异同点

1、结构体的定义//定义结构体typedef struct { int year; int month; int day} StuBirth;//还有一种写法struct Date { int year; int month; int day;};2、类中属性的定义@interface Teacher : Person{//属性的定义 int _year; int month; int _day;}3、结构体

2022-03-30 16:15:15 582

原创 Swift 多态和类型转换

1、类型class MediaItem { var name: String init(name: String) { self.name = name }}class Movie: MediaItem { var director: String init(name: String, director: String) { self.director = director super.init(name: nam

2022-03-24 11:01:35 2356

原创 Swift 中类的继承

1、定义基类任何不从另一个类继承的类都是所谓的基类。Swift 类不会从一个通用基类继承。没有指定特定父类的类都会以基类的形式创建。class Vehicle { //此时 Vehicle 类不从任何类继承,它是一个基类 var currentSpeed = 0.0 var description: String { return "traveling at \(currentSpeed) miles per hour" } func makeNo

2022-03-23 22:34:19 1143

原创 Swift 可失败初始化器、必要初始化器以及反初始化器

1、可失败初始化器定义类、结构体或枚举初始化时可以失败在某些情况下会管大用。这个失败可能由以下几种方式触发,包括给初始化传入无效的形式参数值,或缺少某种外部所需的资源,又或是其他阻止初始化的情况。为了妥善处理这种可能失败的情况,在类、结构体或枚举中定义一个或多个可失败的初始化器。通过在 init 关键字后面添加问号( init? )来写。通过在 init 关键字后添加问号 ( init? )的方式来定义一个可失败初始化器以创建 一个合适类型的可选项实例。另外,也可以使用可失败初始化器创建一个隐式展开

2022-03-23 17:38:15 1247

原创 Swift 指定初始化器和便捷初始化器

1、语法用与值类型的简单初始化器相同的方式来写类的指定初始化器用 convenience 修饰符放到 init 关键字前定义便捷初始化器//类的初始化器class Person { var name: String var age: Int //指定初始化器 init(name: String, age: Int) { self.name = name self.age = age } //便捷初始化器 co

2022-03-23 17:18:55 711

原创 Swift 类、结构体的初始化

1、初始化器初始化器在创建特定类型的实例时被调用struct Person { var name: String init() { //初始化器 name = "zhangsan" }}var p = Person()print("name is \(p.name)")2、默认的初始化器Swift 为所有没有提供初始化器的结构体或类提供了一个默认的初始化器来给所有的属性提供 了默认值。这个默认的初始化器只是简单地创建了一个所有属性都有默认值的新

2022-03-23 16:35:13 2101

原创 Swift 中的存储属性、计算属性以及属性观察器

1、存储属性存储属性是一个作为特定类和结构体实例一部分的常量或变 量。存储属性要么是变量存储属性(由 var 关键字引入)要么是常量存储属性(由 let 关键字引入)常量结构体实例的存储属性:如果创建了一个结构体的实例并且把这个实例赋给常量,不能修改这个实例的属性,即使是声明为变量的属性2、...

2022-03-23 15:33:08 887

空空如也

空空如也

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

TA关注的人

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