自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

smileKH的博客

待我代码编成,取你为妻如何!

  • 博客(712)
  • 资源 (4)
  • 收藏
  • 关注

原创 30天学会OC-29:项目实战与调试技巧

本文介绍了iOS项目开发的完整流程和调试技巧。主要内容包括:1) iOS项目开发5大阶段(需求分析、项目搭建、编码实现、调试测试、优化发布);2) Xcode调试工具详解(断点类型、调试控制、变量查看、内存图和视图调试器);3) 常见调试技巧与问题排查方法;4) 性能优化与内存泄漏检测方法;5) Git版本控制的基本概念和常用命令。文章还提供了实践练习建议,帮助开发者掌握iOS项目开发的关键技能。

2025-08-03 09:05:41 824

原创 30天学会OC-28:Objective-C与Swift混编

iOS开发中,Objective-C与Swift混编是一项实用技能,允许开发者在项目中同时使用两种语言。混编的主要方法包括:1)在Objective-C项目中添加@objc标记的Swift类,通过自动生成的YourProject-Swift.h头文件调用;2)在Swift项目中通过桥接头文件YourProject-Bridging-Header.h导入Objective-C类。需要注意命名转换、可选类型处理等兼容性问题,并确保正确配置编译设置。混编技术为项目迁移和团队协作提供了灵活性,使开发者能充分利用两种

2025-08-03 09:04:39 815 1

原创 30天学会OC-27:Swift语言基础

Swift基础语法摘要 Swift是Apple开发的现代化编程语言,具有安全、高性能和易读易写的特点。主要语法包括: 变量与常量:let声明常量,var声明变量,支持类型推断 数据类型:包含Int、Double、Bool、String等基本类型,以及Array、Dictionary、Set等集合类型 运算符:基础算术运算符、逻辑运算符,特有区间运算符和空合运算符 控制流:if/else条件语句、switch-case模式匹配,以及for-in/while循环 函数与闭包:使用func定义函数,闭包作为匿名代

2025-08-03 09:03:56 222

原创 30天学会OC-26:SwiftUI基础

本文介绍了SwiftUI框架的基本概念和核心功能。SwiftUI是Apple推出的声明式UI框架,通过组合视图构建界面,支持自动响应数据变化。主要内容包括:1) 基本视图创建和常用控件(文本、图片、按钮等);2) 布局容器(VStack/HStack/ZStack)的使用;3) 数据流管理(@State、@Binding和@ObservableObject);4) 视图修饰符的运用。文章通过代码示例演示了SwiftUI的声明式语法特性,适合作为现代iOS开发的入门指南。

2025-08-03 09:03:08 367

原创 30天学会OC-25:Widget与App Extension

iOS App Extension开发指南摘要: 本文介绍了iOS App Extension的基本概念和开发方法,重点讲解了Today Widget(小组件)的实现。App Extension允许应用功能扩展到系统不同区域(如通知中心、分享菜单等),具有独立运行、受限环境等特点。常见类型包括Today Widget、Share Extension等。文章详细演示了Today Widget的创建流程、UI设计、数据加载和交互逻辑,包括如何通过App Group共享数据,以及使用URL Scheme与主应用通

2025-08-03 09:02:20 275

原创 30天学会OC-24:推送通知

本文介绍了iOS推送通知的实现方法,包括本地通知和远程通知。主要内容为:1)使用UNUserNotificationCenter框架发送本地通知的完整流程,包括请求权限、创建通知内容、设置触发器、发送通知等;2)如何处理通知交互,包括应用在前台接收通知和用户点击通知时的回调处理。文章提供了详细的Objective-C代码示例,涵盖了基本通知、带附件的通知以及定时、日历、位置等多种触发方式。适合iOS开发者学习如何在自己的应用中实现推送通知功能。

2025-08-03 09:01:38 362

原创 30天学会OC-23:定位与地图

iOS定位与地图开发摘要:本文介绍了iOS中定位和地图功能的核心框架Core Location和MapKit的使用方法。主要内容包括:1)通过CLLocationManager获取用户位置,处理不同定位权限(使用期间/始终);2)在Info.plist配置定位权限描述;3)实现CLLocationManagerDelegate回调处理位置更新和权限变更;4)集成地图显示功能。文章提供了完整的Objective-C示例代码,展示如何请求定位权限、获取当前位置并更新UI显示,适用于需要实现定位服务的iOS应用开

2025-08-03 09:00:58 289

原创 30天学会OC-22:相机与相册

本文介绍了如何在iOS应用中使用UIImagePickerController访问设备相机和相册。主要内容包括:1)UIImagePickerController的基本功能,如选择媒体类型(图片/视频)和来源(相册/相机);2)关键属性设置,包括sourceType、mediaTypes和allowsEditing;3)代理协议UIImagePickerControllerDelegate的使用方法,处理选择结果和取消操作;4)提供代码示例展示如何从相册选择图片和使用相机拍照。文章还提到需要检查设备功能可用

2025-08-03 09:00:12 260

原创 30天学会OC-21:音频与视频播放

本文介绍了iOS中音频和视频播放的基本实现方法。音频播放分为短音频(使用AudioServicesPlaySystemSound)和长音频(使用AVAudioPlayer)两种场景,分别适用于提示音和背景音乐等需求。视频播放通过AVPlayer和AVPlayerLayer或AVPlayerViewController实现,前者提供更灵活的界面定制,后者则提供完整的播放控制界面。文章包含详细的代码示例,展示了如何创建播放器、设置属性、处理播放事件等核心功能,并提及了后台播放和中断处理等高级话题。这些方法为iO

2025-08-03 08:59:28 817

原创 30天学会OC-20:动画与核心动画

iOS动画开发指南:从UIView动画到Core Animation 摘要:本文系统介绍了iOS平台实现动画的两种主要方式。UIView动画提供简单易用的API,适合基础动画需求,支持属性变化、延时、重复等特性。更强大的Core Animation框架直接操作CALayer,支持复杂动画效果,包括基本动画(CABasicAnimation)、关键帧动画(CAKeyframeAnimation)等。文章通过Objective-C代码示例演示了视图移动、旋转、透明度变化等常见动画效果,并详细讲解了动画参数配置和

2025-08-03 08:58:42 595

原创 30天学会OC-19:手势识别与事件处理

iOS事件处理与手势识别摘要 本文系统介绍了iOS的事件处理机制和手势识别技术: 事件响应链:详细解析了iOS事件传递机制,包括命中测试、响应者对象和事件传递路径,阐述了nextResponder的层级关系。 触摸事件处理:讲解了UIResponder的四个核心方法(touchesBegan/Moved/Ended/Cancelled)及其使用场景,提供了触摸事件处理的示例代码。 手势识别器:介绍了UIGestureRecognizer及其常用子类(点击、拖拽、长按等),说明了手势识别器的使用步骤和注意事项

2025-08-03 08:58:01 937

原创 30天学会OC-18:导航与多视图管理

iOS应用多视图管理涉及三种主要方式:导航控制器(UINavigationController)实现层级导航的栈式管理,包含push/pop操作;标签栏控制器(UITabBarController)通过底部标签栏实现模块切换;模态视图(Modal)以覆盖形式展示临时内容,支持多种呈现样式。文中详细介绍了各控制器的基本概念、常用方法及实现示例,并涉及视图生命周期和数据传递方式,为构建复杂iOS界面提供了完整解决方案。

2025-08-03 08:57:14 999

原创 30天学会OC-17:UITableView与UICollectionView

为了显示更复杂的布局,通常需要自定义。创建的子类可以通过代码创建,也可以通过XIB文件创建。在子类中添加UI控件在方法中添加子视图。如果使用XIB,则在XIB中拖拽控件并连接IBOutlet。在中使用自定义单元格注册自定义单元格。从重用队列中获取单元格。配置单元格数据。@end@end// 在ViewController中注册和使用与类似,通常需要自定义来实现复杂的布局。@end@end。

2025-08-03 08:56:17 436

原创 30天学会OC-16:常用UI控件

今天我们学习了iOS开发中常用的UI控件,包括UILabelUIButtonUITextViewUISwitchUISlider和。我们掌握了它们的基本属性和事件处理方法,并了解了如何通过代码和Interface Builder来配置这些控件。熟练运用这些控件是构建丰富用户界面的基础。明天我们将学习和。

2025-08-03 08:55:31 863

原创 30天学会OC-15:视图与控制器

本文介绍了iOS开发中的核心概念:MVC设计模式、UIView和UIViewController的使用。MVC将应用分为模型、视图和控制器,实现职责分离。UIView负责显示内容,通过frame、bounds等属性控制布局。UIViewController管理视图生命周期,包括viewDidLoad、viewWillAppear等方法。文章还讲解了通过代码或Interface Builder创建UI的方法,以及视图控制器间的跳转方式。这些基础知识是构建iOS应用的重要组件。

2025-08-03 08:54:51 611

原创 30天学会OC-14:数据持久化

iOS数据持久化技术概览 本文介绍了iOS开发中的几种数据持久化方式及其应用场景。主要内容包括: 沙盒机制:iOS应用的独立存储空间,包含Documents、Library/Caches、Library/Preferences和tmp目录,各目录用途和访问权限不同。 属性列表(Plist):适合存储少量结构化数据,通过NSDictionary/NSArray的writeToFile方法写入,dictionaryWithContentsOfFile读取。 偏好设置(UserDefaults):用于存储应用配置

2025-08-02 15:33:23 669

原创 30天学会OC-13:网络编程

Objective-C网络编程摘要 本文介绍了Objective-C中网络编程的基础知识和NSURLSession的使用方法。主要内容包括: 网络基础概念:URL、HTTP协议、请求响应模型、JSON/XML数据格式 NSURLSession核心组件: NSURLSession管理会话 NSURLSessionConfiguration配置会话参数 三种任务类型:DataTask/UploadTask/DownloadTask 使用流程: 创建配置和会话对象 构建URLRequest 创建并执行任务 处理返

2025-08-02 15:32:31 519

原创 30天学会OC-12:多线程与并发编程

iOS多线程编程指南摘要:本文系统介绍了Objective-C中的多线程技术,包括基础概念(进程/线程、并发/并行)和三大实现方案:1)NSThread直接操作线程,需手动管理生命周期;2)GCD(Grand Central Dispatch)通过队列管理任务,支持串行/并行队列、同步/异步执行、延迟任务和调度组;3)NSOperationQueue基于GCD的高级抽象,支持任务依赖和取消。特别强调主队列用于UI更新,并警示死锁风险。最后提及线程安全问题及解决方案(如锁机制),为iOS高性能开发提供完整并发

2025-08-02 15:31:48 538

原创 30天学会OC-11:内存管理高级话题

Objective-C内存管理核心要点 本文深入解析Objective-C内存管理核心机制,涵盖ARC工作原理、修饰符区别、Block内存管理、MRC概念及内存泄漏解决方案。主要内容包括: ARC机制:编译器自动插入retain/release调用,介绍__strong(默认)、__weak(自动置nil)、__unsafe_unretained(野指针风险)等修饰符的使用场景。 Block内存管理:分析变量捕获行为,解决循环引用的__weak+__strong模式,以及__block修饰符对可变性的支持。

2025-08-02 15:31:04 804

原创 30天学会OC-10:协议与分类

本文介绍了Objective-C中协议(Protocol)和分类(Category)的核心概念与应用。协议通过@protocol定义方法规范,支持@required和@optional方法,可实现多态和类型检查。分类则允许为现有类扩展方法(不能添加实例变量),通过@interface ClassName(CategoryName)语法实现。文章对比了分类与子类的区别,并介绍了类扩展(Class Extension)的私有声明用途。最后提供了定义Drawable协议、扩展NSArray/UIView等实践练习

2025-08-02 15:30:12 850

原创 30天学会OC-09:Foundation框架

摘要:本文介绍了Objective-C中Foundation框架的核心类使用方法。主要内容包括:1) NSString和NSMutableString类用于字符串处理,涵盖创建、比较、分割等操作;2) NSArray和NSMutableArray类用于数组操作,支持元素增删查改;3) NSDictionary和NSMutableDictionary类实现键值对存储。文中提供了各类的创建方式、常用方法及代码示例,帮助开发者掌握Objective-C基础数据结构的基本操作。这些类是Foundation框架的基础

2025-08-02 15:28:03 1131

原创 30天学会OC-08:内存管理(ARC)

本文介绍了Objective-C内存管理的核心概念,包括自动引用计数(ARC)、强/弱引用机制以及循环引用问题。重点讲解了ARC的工作原理,强调强引用(strong)会持有对象,而弱引用(weak)不会增加引用计数且能避免循环引用。通过实例演示了循环引用的产生场景和解决方案,建议在代理模式等可能产生循环引用的场景中使用弱引用。此外,还简要介绍了assign修饰符的适用场景和局限性。这些知识对于开发高性能、稳定的Objective-C应用程序至关重要。

2025-08-02 15:27:21 797

原创 30天学会OC-07:封装、继承与多态

摘要 本文系统介绍了面向对象编程(OOP)的三大特性在Objective-C中的实现。封装通过属性(@property)和访问控制(@private/@protected/@public)实现数据隐藏;继承采用单继承机制,子类通过冒号语法继承父类,使用super关键字调用父类方法;多态则通过方法重写实现,允许子类以不同方式实现父类方法。文章通过银行账户、学生类等实例代码,详细展示了如何在Objective-C中应用这些OOP原则,包括属性声明、方法重写等具体技术实现,为开发者构建可维护、可扩展的Object

2025-08-02 15:26:33 803

原创 30天学会OC-06:类与对象

本文介绍了Objective-C面向对象编程的核心概念,包括OOP基础、类定义与实现、对象创建与初始化、属性与实例变量的区别。重点讲解了如何通过.h和.m文件分别定义类接口和实现,详细说明了对象的创建步骤(alloc和init)以及属性(@property)的语法和修饰符。文章通过Book类示例展示了类的完整定义过程,并对比了实例变量与属性的不同访问方式。这些内容是Objective-C编程的基础知识,为后续深入学习iOS开发奠定了基础。

2025-08-02 15:25:54 749

原创 30天学会OC-05:函数与方法

本文介绍了Objective-C中函数与方法的区别及使用方法。主要内容包括:1) C语言函数的定义、声明和调用;2) Objective-C实例方法和类方法的语法及调用方式;3) 参数传递(值传递)和返回值的处理;4) 初步了解方法重写(子类覆盖父类方法)的概念。文章通过示例代码展示了如何定义和使用函数、实例方法及类方法,并说明了Objective-C不支持传统方法重载的特性。这是学习Objective-C面向对象编程的基础知识。

2025-08-02 15:25:15 756

原创 30天学会OC-04:控制流语句

本文介绍了Objective-C中的控制流语句,包括条件语句(if-else、switch)、循环语句(for、while、do-while)和跳转语句(break、continue、return)。详细讲解了每种语句的语法结构、使用方法和注意事项,并提供了代码示例。同时设置了5个练习题目,帮助掌握程序流程控制的基本技能。这些控制流语句是编写逻辑复杂程序的基础,对后续学习Objective-C函数与方法至关重要。

2025-08-02 15:24:36 502

原创 30天学会OC-03:运算符与表达式

本文系统介绍了Objective-C中的运算符及其用法,主要内容包括:算术运算符(+、-、*、/、%)用于基本数学运算;关系运算符(==、!=、>、<等)用于值比较;逻辑运算符(&&、||、!)组合布尔表达式;位运算符(&、|、^等)处理二进制位;赋值运算符(=、+=等)简化变量赋值;条件运算符(?:)实现条件选择;以及sizeof、自增/减等特殊运算符。文章通过示例详细说明了各类运算符的具体应用场景和注意事项,如整数与浮点数除法的区别、对象比较的特殊性等,为Object

2025-08-02 15:23:59 317

原创 30天学会OC-02:数据类型、变量与常量

声明告诉编译器变量的名称和类型,但不会分配内存空间。它通常在头文件中进行,或者在使用变量之前。// 声明一个外部变量// 声明一个局部变量定义为变量分配内存空间,并且只能定义一次。通常在实现文件中进行。// 定义并初始化一个全局变量#define是预处理器指令,在编译前进行文本替换。它没有类型信息,也不会进行类型检查。// 使用没有类型安全。宏展开可能导致意外的副作用(例如,宏参数包含表达式)。调试困难。

2025-08-02 15:23:06 255

原创 30天学会OC-01:OC语言初探

本文介绍了Objective-C的入门知识,包括其历史背景和面向对象特性。教程详细演示了如何安装配置Xcode开发环境,并指导读者编写运行首个"Hello World"程序。文章还解析了Objective-C程序的基本结构,包括头文件、实现文件、main函数和消息传递机制。最后提供了修改程序、观察输出顺序等实操练习,帮助初学者快速掌握Objective-C基础概念。

2025-08-02 15:21:38 698

原创 30天学会Java学习大纲

这篇Java学习路线规划为30天系统课程,从基础到进阶全面覆盖Java核心知识。课程分为环境配置、基础语法、面向对象、集合框架、IO流、多线程、网络编程、反射、JDBC、设计模式等模块,最后通过项目实战巩固所学。每天重点学习一个主题,循序渐进,如第1-3天学习基础语法,6-8天掌握面向对象,12-13天学习集合框架,28-29天了解设计模式等。课程还包含Java8新特性和实用工具(Maven/JUnit/日志框架)的学习,适合零基础系统入门Java开发。

2025-08-02 15:09:05 870

原创 30天学会Java-30:项目实战与总结

本文将指导开发一个简单的学生管理系统,综合运用Java基础知识。系统包含学生信息的增删改查功能,支持数据持久化存储。采用Maven项目结构,包含模型层(Student.java)、数据访问层(StudentDao.java)和服务层(StudentService.java)。使用SQLite数据库存储数据,包含JDBC驱动配置和JUnit测试框架。核心功能实现包括:学生实体类定义(学号、姓名、年龄、性别等属性),基于JDBC的数据访问层实现数据库操作,以及服务层业务逻辑处理。项目结构规范,适合Java初学者

2025-07-30 23:27:44 923

原创 30天学会Java-29:设计模式(二)

本文介绍了两种常用的结构型设计模式:代理模式和装饰器模式。代理模式通过创建代理对象控制对真实对象的访问,分为静态代理(编译时确定)和动态代理(运行时生成)两种实现方式。装饰器模式则通过包装对象动态添加功能,避免了继承带来的类膨胀问题,以咖啡加料为示例展示了如何灵活扩展对象功能。两种模式都通过组合而非继承来增强功能,但侧重点不同:代理模式主要控制访问,装饰器模式专注于功能扩展。

2025-07-30 23:27:03 483

原创 30天学会Java-28:设计模式(一)

单例模式和工厂模式是两种常用的创建型设计模式。单例模式确保类只有一个实例,提供全局访问点,实现方式包括饿汉式、懒汉式、双重检查锁定、静态内部类和枚举等。工厂模式封装对象创建过程,分为简单工厂、工厂方法和抽象工厂三种形式:简单工厂通过参数决定产品类型;工厂方法将创建逻辑延迟到子类;抽象工厂创建相关产品族。这些模式提高了代码可维护性和扩展性,实现了对象创建与使用的解耦。

2025-07-30 23:26:28 634

原创 30天学会Java-27:日志框架(Log4j/Slf4j/Logback)

本文介绍了Java日志系统的基本概念和常用框架。首先阐述了日志的作用和重要性,包括问题诊断、行为审计、性能监控和调试等,并详细说明了从FATAL到TRACE的6种日志级别。重点介绍了Log4j2、SLF4J和Logback三种主流日志框架:Log4j2作为Apache开源框架,需配置log4j2.xml并使用LogManager;SLF4J是日志门面API,可与Logback等框架绑定;Logback作为SLF4J原生实现,性能优于Log4j。最后讲解了如何配置日志输出到文件和控制台,包括Log4j2的Ro

2025-07-30 23:25:45 681

原创 30天学会Java-26:单元测试(JUnit)

本文介绍了Java单元测试的基本概念和JUnit框架的使用。主要内容包括:单元测试的定义和重要性,JUnit 5的依赖配置、测试类与方法创建,以及常用注解(@Test、@BeforeEach等)的使用。详细讲解了断言方法(assertEquals、assertTrue等)的应用,并提供了测试报告生成的配置方法(Maven和Gradle项目)。通过示例代码展示了如何对计算器类进行单元测试,帮助开发者掌握Java单元测试的基本技能,提高代码质量和可维护性。

2025-07-30 23:25:01 715

原创 30天学会Java-25:Maven/Gradle项目管理

本文介绍了Java项目构建工具Maven和Gradle的安装配置与使用方法。Maven基于POM模型,通过XML文件管理项目;Gradle基于Groovy DSL,提供更高灵活性。详细说明了两种工具的安装步骤、环境配置验证方法,以及如何创建项目骨架和管理依赖。重点对比了Maven的三阶段生命周期与常用命令,以及Gradle的任务执行方式。文章最后总结了两者的特点:Maven的稳定性与约定优于配置原则,Gradle的高性能与灵活DSL,并指出选择应基于项目需求和团队偏好。

2025-07-30 23:24:20 984

原创 30天学会Java-24:JDBC数据库编程(二)

本文介绍了JDBC的高级特性,重点讲解了结果集处理、事务管理和批处理等核心内容。在结果集处理部分,演示了如何通过ResultSet对象遍历查询结果,并提供了获取不同类型列数据的方法示例代码。事务管理部分详细解释了ACID四大特性,展示了如何通过JDBC进行事务控制,包括关闭自动提交、手动提交和回滚操作的实际应用。文章还通过转账案例说明了事务在实际业务场景中的重要性。这些高级特性对于开发可靠、高效的数据库应用程序至关重要。

2025-07-30 23:23:41 631

原创 30天学会Java-23:JDBC数据库编程(一)

本文介绍了JDBC(Java数据库连接)的基础知识,主要包括四部分内容:首先概述了JDBC的作用和驱动类型,说明其作为Java访问关系型数据库的标准API;其次讲解了如何加载数据库驱动,特别指出了JDBC 4.0+版本驱动自动加载的特性;然后详细说明了建立数据库连接的方法,包括连接URL格式和获取Connection对象的代码示例;最后简要提及了执行SQL语句的Statement和PreparedStatement对象。文章强调在实际开发中应使用try-with-resources语句确保资源正确关闭,并提

2025-07-30 23:22:44 815

原创 30天学会Java-22:Java 8新特性(二)

本文深入探讨了Java 8的三个核心特性:Stream API高级操作、Optional类和新的Date/Time API。在Stream API部分,详细介绍了filter、map、flatMap等中间操作和collect、reduce等终端操作,并通过学生数据处理的完整示例展示其应用。Optional类部分讲解了如何安全处理可能为null的值,包括创建方法和常用操作。这些特性共同提升了Java代码的简洁性、安全性和可读性,是现代化Java开发的重要工具。

2025-07-30 23:21:54 912

原创 30天学会Java-21:Java 8新特性(一)

Java 8 核心特性摘要:Java 8 引入了革命性的新特性,包括 Lambda 表达式、函数式接口和方法引用。Lambda 表达式简化了匿名函数的编写,语法为 (params) -> expression 或 (params) -> { statements }。函数式接口是只含一个抽象方法的接口,常用内置接口包括 Predicate、Consumer、Function 等。方法引用是 Lambda 的简化形式,包括静态方法引用 ClassName::staticMethod、实例方法引用

2025-07-30 23:18:39 675

2020iOS最新苹果登录OC版本demo

2020iOS最新苹果登录OC版本demo,根据多个资料总结出方法并且封装成类,可以直接使用,大家放心下载

2020-10-27

2020最新淘宝淘客SDK,阿里百川最新接入资料

2020最新淘宝淘客SDK,阿里百川最新接入资料,加上自己总结出来的方法,可以直接转跳到淘宝购买商品

2020-10-27

2020最新京东券商SDK和接入文档资料

2020最新京东券商SDK和接入文档资料,内附转跳方法,京东联盟接入,其中主要接入库文档需要修改才行,增加lib库才可以编译通过。

2020-10-27

iOS 仿京东淘宝商品详情tableView上滑和headerView之间的滑动效果

iOS 仿京东淘宝商品详情tableView上滑和headerView之间的滑动效果,滑动详情图缩小,下拉拉长,仿京东效果,headerview滚动图可以点击

2020-11-20

空空如也

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

TA关注的人

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