自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(337)
  • 资源 (22)
  • 收藏
  • 关注

原创 如何使用dSYM文件来符号化崩溃信息

iOS崩溃日志符号化摘要:本文介绍了如何将不可读的崩溃堆栈信息转换为可读格式。主要内容包括:1)符号化必要性,原始崩溃日志难以定位问题;2)获取dSYM文件的方法,包括调试环境配置和从ipa包提取;3)手动分析.crash文件,展示了崩溃日志结构。通过dSYM文件中的地址映射关系,可将十六进制地址转换为具体的函数名和行号,帮助开发者快速定位崩溃原因。文中详细说明了Xcode配置、命令行工具使用及日志分析方法。

2025-12-03 23:39:45 802

原创 详解没有dSYM文件如何解析iOS崩溃日志

本文介绍了在iOS应用崩溃日志缺失dSYM文件时的符号化方法。通过分析崩溃日志中的内存地址,结合二进制文件的基址和偏移量,可以恢复符号表定位具体崩溃函数。文章详细演示了如何从非标准崩溃日志中提取基址信息,并利用开源工具restore-symbol恢复符号表。该方法能有效解决因dSYM文件丢失导致的崩溃定位问题,为开发者提供了一种替代的崩溃分析方案。

2025-12-03 22:59:10 992

原创 ips 文件符号化

以上符号化需要的几个文件都放到同一个目录下面,例如 crashLog,然后 cd 到 crashLog ,执行以下命令。然后再执行回上面的符号化命令就可以看到。1、导出 ips 文件,改后缀名为。3、导出 dsym 包。

2025-12-03 22:56:44 163

原创 使用 atos 符号化具体崩溃行

摘要:文章介绍了iOS应用崩溃日志的分析方法,重点讲解了使用atos工具符号化崩溃地址的步骤。通过计算模块加载地址和崩溃地址,结合xcrun atos命令可以将机器码转换为可读的函数名。同时指出需要注意处理不同ARM架构的情况,并提及系统库符号化需要借助IDA或otool工具。文章还提供了系统符号表存储路径和otool的使用示例,为开发者提供了实用的崩溃日志分析指导。

2025-12-03 22:40:08 333

原创 确定crash文件和dSYM是否对应

摘要 通过UUID匹配确保crash文件与调试符号文件(dSYM)对应是iOS崩溃分析的关键步骤。三个关键UUID需要一致:应用程序二进制文件(xx.app)、调试符号文件(xx.app.dSYM)和崩溃报告中的UUID。可以使用dwarfdump --uuid命令查看前两者的UUID,而崩溃报告的UUID位于Binary Images部分的尖括号内。匹配这些UUID能确保正确解析崩溃堆栈信息。此外,崩溃报告还提供了slide address(0x1000ac000)等重要调试信息。

2025-12-03 22:32:53 138

原创 符号表和 dSYM UUID 确认

本文介绍了iOS开发中符号表与dSYM文件的重要性及使用方法。符号表用于映射内存地址与代码位置,帮助解析Crash堆栈。dSYM文件包含调试信息,需在发布时备份。文章详细说明了如何定位、生成dSYM文件,检查其UUID匹配性,并从Xcode/iTunes找回已发布的dSYM文件。特别提醒开启Bitcode时需从App Store下载对应dSYM文件。最后介绍了通过Bugly工具上传符号表的方法,为开发者提供了完整的Crash分析解决方案。

2025-12-03 22:27:12 948

原创 从源码看 Block 和 __block 的实现

本文通过对比C++代码增量,探究了Objective-C中Block的实现原理。Block的本质是一个匿名函数,在底层被转换为包含函数指针的结构体。主要包含三个核心结构:__block_impl(通用Block头)、__main_block_desc_0(描述符)和__main_block_func_0(执行体)。Block的调用过程是通过结构体获取函数指针,再转换为合适类型后执行。文章详细解析了Block结构的内存布局和调用机制,揭示了Objective-C中闭包的底层实现原理。

2025-07-15 16:17:20 767

翻译 【翻译】使用 Live Photo - 关于 Apple Live Photo 格式的深入讨论

本文介绍了Live Photo的组成结构和编程处理方法。Live Photo由主图像(HEIC/JPEG)和动态视频(MOV)组成,通过assetIdentifier绑定。文章详细讲解了如何: 通过Photos框架获取Live Photo资源 使用PHAssetResource提取Live Photo的配对照片和视频 创建Live Photo的关键步骤: 为封面照片添加标识符元数据 为视频添加包含标识符的AVMetadataItem 使用AVFoundation框架处理视频元数据 文中提供了Swift代码示

2025-07-08 13:53:05 507

原创 关于 Apple Live Photo 的探究以及实现

摘要(149字) Live Photo是一种基于HEIC格式的动态图像技术,结合了静态照片和短视频。HEIC相比JPEG具有显著优势:文件体积减少40%-60%,支持透明通道、多帧图像和HDR等特性,特别适合iPhone的Live Photo功能。HEIC采用HEVC编码,与苹果硬件深度优化,为iCloud存储节省空间。视频转Live Photo需将视频帧与音频封装为HEIC格式。常见图片格式中,HEIC、WebP和AVIF是新一代高效格式,而JPEG/PNG仍广泛兼容使用。

2025-07-07 17:47:44 1422

原创 iOS Mach 异常、Unix 信号 和NSException 异常

前言Crash的主要原因是你的应用收到了未处理的信号。未处理信号可能来源于三个地方:kernel、其他进程、以及App本身。因此,crash异常也分为三种:Mach异常:是指最底层的内核级异常。用户态的开发者可以直接通过Mach API设置thread,task,host的异常端口,来捕获Mach异常。 Unix信号:又称BSD 信号,如果开发者没有捕获Mach异常,则会被host层的方法ux_exception()将异常转换为对应的UNIX信号,并通过方法threadsignal()将信

2020-07-07 16:20:14 1176

原创 汇编定位 objc_msgSend + 16 出错的问题

前言:本文涉及到汇编的部分基础,对汇编不懂的同学可以先看看iOS汇编入门-arm64基础这篇文章。先看下出错堆栈#0 ThreadSIGSEGVSEGV_ACCERR0 libobjc.A.dylib 0x000000018de86f30 objc_msgSend + 161 HLLCourseLive 0x0000000100318ee0 0x0000000100060000 + 28546242 AVFAudio 0x00000001a843d2a8

2020-06-18 15:07:03 1214

原创 iOS Crash栈的捕获和分析

在iOS应用开发和线上运行的过程中,我们总会被反馈到各种各样的崩溃。很多崩溃通过case的描述,就能很快的重现并得到修复,但是更多的崩溃也许这一辈子就发生这么一次,也许我们永远不知道它什么时候再会出现。同时,就算我们捕获到一个Crash栈,由于版本环境等种种原因,或者发生崩溃的代码我们就无法得到它详细的源码,我们往往会对着一片全是程序指令偏移量的Crash栈一脸蒙蔽。基于以上事实,我们需要从Crash栈的捕获和分析这两个角度进行深入的了解。本博客主要内容分为两部分:OC中的Crash异常的总结

2020-06-11 20:21:44 1504

原创 iOS 汇编入门 - arm64基础

前言iOS 中常见的架构有 armv7、armv7s、arm64、i386、x86_64 这些。其中, armv7 、armv7s 、arm 64 都是 ARM 处理器的指令集,i386 、x86_64 是 Mac 处理器的指令集这些指令集对应的机型有以下这些:arm64e: iphone XS | iphone XS Max | iPhoneXRarm...

2020-02-27 13:54:20 2515

原创 使用 Charles 解决部分App无法上网的问题(SSL Pinning)

设置好 Charles 代理之后发现打开目标 App debug 的时候弹窗“网络异常”提醒,测试 Safari 正常和其他 App 发现大部分都可以打开。Google之后发现这是因为该 App 使用了SSL Pinning 的原因。SSL Pinning 意味着 App 拷贝了一份服务器的公钥在本地,在进行网络连接的时候使用了本地的公钥进行加密了。由于 Charles 的密钥无法匹配导致拒接...

2019-10-22 11:24:04 8816 1

翻译 一次编译同时启动多个模拟器

原文 https://buildingvts.com/launch-multiple-ios-simulators-on-a-single-compile-985fd2ad5eb1 当你写完自动布局需要测试在不同模拟器上的运行效果时你是否很头疼,需要一个一个模拟器去启动运行。这时候如果可以一编译就同时启动多个模拟器那该是多么好啊。XCode 9 有一个新的特性——允许...

2018-04-04 15:48:58 4340

翻译 iOS高级调试&逆向技术-汇编寄存器调用

前言本文翻译自Assembly Register Calling Convention Tutorial 序言通过本教程,你会可以看到CPU使用的寄存器,并探索和修改传递给函数调用的参数。还将学习常见的苹果计算机架构以及如何在函数中使用寄存器。这就是所谓架构的调用约定。 了解汇编是如何工作的,以及特定架构调用约定是如何工作是一项极其重要的技能。它可以让你在没有源码的情况下,观察和修改传递给函数的参数

2017-07-13 18:20:50 8368 7

原创 分离静态库架构

先来看一段 MakeFile 脚本:OUT = libkugouplayer_VIPER3DRender.aOBJS = \ ../../Limiter.cpp \ ../../ViPER3DEffect.cpp \ ../../../AudioEffect.cppINCLUDE = -I../../../ \ -I.

2017-05-18 11:17:45 1137

原创 ARC 下 C++/OC 混编计数器的问题

ARC 模式下,object-C 编写的代码的内存管理都交给了自动引用计数器了,不用我们自己再去操心内存的管理,但使用 Core Foundation 框架或者是和 C++ 混编时,代码的内存还是需要我们自己去管理的,这时候就需要注意了!Core Foundation 主要是由不透明类型(opaque type),即 C 结构体组成,语言层面并不支持继承和多态,而 Core Foundation能够

2017-05-16 20:54:37 1788

原创 拷贝头文件shell

简单的拷贝头文件的话其实一个命令就可以搞定了find ./ -type f -not -name "*.h" -delete然后 copy 到你想要的地方,但这样做得不够完全,会出现一些空的目录,而且每次都要手动去敲命令,还是觉得挺麻烦的。所以还是写一个脚本执行好点,如上图,想要的 copy 的是 include 里面的头文件。脚本如下:#!/bin/bashheader_path=$SRCROO

2017-05-03 17:03:05 1830

原创 AVAudioSessionInterruptionNotification not called

问题描述:监听了系统的打断事件,在来电的时候有收到系统打断的 AVAudioSessionInterruptionTypeBegan 通知,却没有收到 AVAudioSessionInterruptionTypeEnd 通知。[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:n

2016-08-01 17:39:51 10348

原创 重定向 NSLog 输出到文件

问题:在 iOS 的开发过程中总是离不开 Debug,调试的时候都是依靠 XCode log 输出来追踪确定问题。但如果离开了 XCode 的时候仍然想看到日志的输出,比如在调试 App 与硬件的交互的时候,这时候应该怎么办?解决思路:方法一:第一反应是,写个类似于 NSLog 的输出函数,把想要的查看的信息输出到 view 上就好了。但很快就否决了,原因有2个:每

2016-07-03 21:22:43 2291

原创 iOS 编译包含 bitcode 的 opencore-amr-iOS 静态库

下载 opencore-amr-iOS 源码。修改 build_ios_xcode6.sh 脚本,以下加粗的部分为修改的内容。#!/bin/sh### Modified from http://blog.csdn.net/favormm/article/details/6772097set -xeDEVELOPER=`xcode-select -print-path`DEST=`pwd

2016-06-20 18:09:12 5189

原创 iOS 编译包含 bitcode 的 x264 静态库

1、首先下载 x264 的源码 git clone git://git.videolan.org/x264.git# cd x2642、编译脚本在这里。3、将编译脚本下载下来,打开 build-x264.sh ,在所有的 CFLAGS="... -fembed-bitcode" 后面加上 -fembed-bitcode ;然后将 build-x264.sh 放在和 x264

2016-06-20 15:59:26 4103

原创 iOS 编译包含 bitcode 的 fdk-aac 静态库(包含 arm64)

不多说了,这里是编译脚本。下载下来这个编译脚本后,修改一下 CFLAGS 选项,添加 -fembed-bitcode ,如下:细心的话,你设置一下 XCode 的 bitCode 选项的 enable 为 YES 的话,在 sourcetree 里查看批文件的修改也可看到其实修改到的也是这一行。有几点要注意的:1、它这个脚本使用的是 0.1.3 的 fdk-aac ,最新版的在这里

2016-06-17 17:18:37 3366

转载 谈谈 WebSocket

对于一些例如 IM、金融、股价、视频会议等这样一些应用来说,所需要的不过是高实时、低延时。针对于这一需求,现在有哪些比较好的可选方案呢?目前比较流行的是 socket 和 websocket。Socket首先,Socket 其实并不是一个协议。它工作在 OSI 模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是TCP 或 UDP )而存在的一个抽象层。Socke

2016-05-26 23:26:04 3880

转载 漫谈 iOS Crash 收集框架

为了能够第一时间发现程序问题,应用程序需要实现自己的崩溃日志收集服务,成熟的开源项目很多,如 KSCrash,plcrashreporter,CrashKit 等。追求方便省心,对于保密性要求不高的程序来说,也可以选择各种一条龙 Crash 统计产品,如 Crashlytics,Hockeyapp ,友盟,Bugly 等等。是否集成越多的 Crash 日志收集服务就

2016-05-26 17:17:40 1705

原创 调节音量时隐藏系统提示框(Hide device volume HUD when adjust the volume)

有这样一个需求,在特定页面调节系统音量的时候需要隐藏系统的音量 HUD 提示框。首先想到的是肯定是找控制系统音量的那个类,查找一下有没有对应的接口提供,过了一下 MPMusicPlayerController 并没有找到我需要的接口。又 Google 了一下,找到了设置音量的类 MPVolumeView ,根据 stackoverflow 上的答案,说是这样设置MPVolumeView *

2016-05-02 23:07:11 6016

转载 Swift编程的15个技巧

转载链接:http://geek.csdn.net/news/detail/58593自2014年9月1.0版发布后,Savvy的应用开发团队就开始在iOS项目中实验并使用Swift。不过由于Swift相对还很新,当时大多项目仍在使用Objective-C;自从2015年9月Swift 2.0版本发布以来,我们已经开始改用Swift来编译新的项目了。实际上在2016年1月,我们大多数的

2016-03-02 15:44:07 2904

转载 实现一个TODO宏

文章转自 sunnyxx 的博客:http://blog.sunnyxx.com/2015/03/01/todo-macro/实现一个TODO宏实现一个能产生warning的TODO宏,用于在代码里做备忘,效果:下面一步步来实现这个宏。Let’s do it手动让编译器报警(报错)可以用以下几个方法:123

2015-12-05 16:12:15 1285

转载 iOS 保持界面流畅的技巧

文章转自:http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消

2015-11-19 09:41:23 7522

转载 afnetworking_downloadFile_example

- (IBAction)downloadFile:(id)sender { NSURL *url = [NSURL URLWithString:@"http://www.hulkshare.com/dl/qw30o7x373a8/stan_courtois_&_felly_vs_cutting_crew_-_die_in_your_arms_(x-centrik_mix)_%5B_www

2015-10-28 18:36:57 950

原创 XCode 7.1 发送HTTP请求报错解决办法

昨天刚刚升级了XCode 7.1,然后在使用MPMoviePlayerController 播放在线流视频的时候报了HTTP的错误,如下:Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions

2015-10-27 12:22:27 2367

原创 Object-C 零碎知识点笔记

1、记录代码片段运行时间double begin = mach_absolute_time();[self refreshSongImageInNewLogic];double end = mach_absolute_time();NSLog(@"time cost = %f",MachTimeToMilliSecond(end - begin)); //毫秒double ...

2015-10-16 14:39:59 1340

转载 为什么说,你纯看代码而没有碰到这个场景你就算看懂了也没法理解?(关于并发)

为什么说,你纯看代码而没有碰到这个场景你就算看懂了也没法理解?我碰到了一个什么问题?来说一个场景,打开你的Instagram,如果手机有VPN,请连接上VPN.打开搜索页面,连续输入m,i,k,e.你会发现,小菊花转了4次.可以想象,客户端向服务端发起了4个请求,搜索的字段分别是"m","mi","mik","mike".那么问题来了.这四次搜索肯定是并发的,也就是

2015-09-23 22:59:26 966

原创 在Darwin层建立Notification监听锁屏/解屏事件

判断屏幕锁屏/解锁://// ViewController.m// TestScreenLockDemo//// Created by aaron.zheng on 2015-09-21.// Copyright © 2015 aaron.zheng. All rights reserved.//#import "ViewController.h"#include

2015-09-21 15:29:56 3431

原创 初识ios音频相关类

AVAsset 是一个播放音频和视频的抽象类。比较常用到的是它的子类 AVURLAsset ,通过 URL 实例化它。AVComposition 是用于时间编辑的。要播放一个AVAsset实例,需要先初始化一个 AVPlayerItem 实例,使用 AVPlayerItem 去设置一些初始化状态(例如:timeRange),然后将 player item 提供给 AVPlayer

2015-09-14 15:03:50 3147

转载 Streaming iPod Audio Tracks From Disk With Core Audio

There are two questions that often arise for iOS developers new to Apple’s audio frameworks: (1) How do I play tracks from the iPod Library using the low level Core Audio APIs (as opposed to using an

2015-09-12 14:20:29 1320

转载 Xcode Server Tutorials: 3. Prebuild & Postbuild Scripts

This article is Part 3 of a whole series called Xcode Server Tutorials. Check out Part 2 first if you haven't already. New posts are always tweeted by me (@czechboy0) on Twitter.Great to s

2015-09-09 23:30:36 664

转载 Xcode Server Tutorials: 2. Integrations

This article is Part 2 of a whole series called Xcode Server Tutorials. Check out Part 1 first if you haven't already. New posts are always tweeted by me (@czechboy0) on Twitter.Ok, time t

2015-09-09 23:29:17 845

转载 Xcode Server Tutorials: 1. Getting Started

This article is Part 1 of a whole series called Xcode Server Tutorials. New posts are always tweeted by me (@czechboy0) on Twitter.We all know how it works. Your iOS teammate works on a feat

2015-09-09 23:27:38 1968

详解没有dSYM文件如何解析iOS崩溃日志测试代码

详解没有dSYM文件如何解析iOS崩溃日志测试代码

2025-12-03

基于UDP的简单字符界面的聊天程序

用c写的一个基于UDP的简单字符界面的聊天程序,附带解释说明的word文档。

2013-04-24

基于UDP的简单可视化界面聊天程序(c/c++)

socket编程,基于UDP的简单可视化界面聊天程序,,局域网内可用,刚开始学socket编程的娃儿可以看一下,共勉。

2013-04-27

Windows异步套接字网络编程

本程序基于windows的异步消息机制,采用异步套接字WSAsoket,详细设计实现了客户端、服务器端的即时消息通讯,是做聊天室(单人聊天、多人聊天)的一个很好的例子,编程工具采用VC++(MFC). 附注:本程序是从别人那里下载过来的,看不惯其过高的资源积分,自己就上传了一份,东西是用来分享的,尤其是在学习阶段,有分享才有进步嘛. 相关资源可看孙鑫经典20集教学视频的第16集.

2013-04-30

TPKeyboardAvoidingScrollView(view自动上滚,避免遮住输入框)

TPKeyboardAvoidingScrollView用于在scrollview中实现自动上滚,避免键盘遮盖住了textfield,textview等控件 使用方法: 将TPKeyboardAvoidingScrollView.h和TPKeyboardAvoidingScrollView.m add进工程中 在需要用键盘自动上滚的controller的xib文件中,找到view,修改其Class为TPKeyboardAvoidingScrollView就可以了 可以参照BSPickerController.xib中看看

2013-09-23

优化UITableViewCell滚动性能demo

优化UITableViewCell滚动性能,使用到Loren Brichter在Twitter中写到得关于UITableViewCell流畅滚动的内容。

2014-05-10

fdk-aac-0.1.3(包含bitcode)

fdk-aac-0.1.3 源码,里面也包含了一个已经编译好的包含所有架构的 libfdk-aac.a , 要自己编译的话看这里啦 http://blog.csdn.net/chaoyuan899/article/details/51701100

2016-06-17

好友列表(multimap实现)

多映射示例:multimap 实现的简单好友列表。

2013-05-29

OJ题目及源码

学校OJ网站的题目及源码 网址:http172.21.85.19ZQUOJhomeHomePage.jsp 想提高编程水平的娃儿平时可以练一练

2012-12-28

网络数据库课程设计

实验一~实验四都是对department表和custom表的增、删、查、改操作 实验一,嵌入sql代码, 实验二,用存储过程实现 实验三,用三层架构实现 实验四,用Ling实现 实验五,对Produc表的操作,使用Ajax技术查询。 附注:导入数据库,直接打开DiaryPro的.sln后缀名的文件即可运行

2012-12-28

DBHelper类

微软DBHelper,封装了对数据库的一些常用操作

2012-12-23

软件工程项目编写模板与示例

文档包括以下内容: 基于多元交流的手机支付购物平台概要设计说明书 基于多元交流的手机支付购物平台详细设计说明书 网上商城项目需求规格说明书 在线音乐系统项目计划

2013-01-06

JDBC连接Oracle

JDBC连接Oracle,附带两个教学视频

2012-10-26

Visual.Assist.Crack

Visual.Assist.Crack编程助手工具,破解版,将文件夹里面的.dll文件复制到安装文件夹下,that's all!

2012-08-30

employeeProject

我的第一个比较正规的、专业化的、用面向对象方法编程的employeeProject,留下来小小纪念一下。

2012-10-15

Prolific usb-to-serial comm port 驱动 for win7win8

解决usb-to-serial的问题,win8亲测可用,注意安装的时候以管理员身份win7兼容性运行,安装完成之后点击“更新驱动程序软件”才可用。 文档描述支持以下系统: Supports the following Windows OS Family: - Windows 2000 SP4 - Windows XP SP2 and above (32 & 64 bit) - Windows Server 2003 (32 & 64 bit) - Windows Vista (32 & 64 bit) - Windows 7 (32 & 64 bit) - Windows Server 2008 / 2008 R2 (32 & 64 bit)

2013-04-27

Object-C内存管理2-对象之间的内存管理

博客相关源码下载,对应博文http://blog.csdn.net/chaoyuan899/article/details/10355669

2013-08-26

《数据结构》树的相关操作

基于C语言的树的相关操作:新建、插入、删除、函数递归及非递归的遍历、层遍历

2011-06-25

FSCapture_7.0_XiaZaiBa(滚动截图).exe

FSCapture_7.0_XiaZaiBa(滚动截图).exe

2013-04-21

OpenGL教程_NeHe_源代码_1-48

OpenGL教程_NeHe_源代码_1-48

2013-03-10

C语言流程图生成器(免注册版)

一款强大的C语言流程图生成器(免注册版),可以将生成的流程图直接导出到word、pdf等。

2012-06-19

Visual C++MFC编程实例

本书通过85个实例全面讲述了应用MFC进行Visual C++编程的思想。每个实例均以编写一个应用程序要走的步骤编写。全书共分四部分进行介绍,第一部分是基础知识,第二部分讲述用户界面的实例,第三部分讲述MFC内部处理方面的实例,第四部分讲述打包实例。全书基本上面向实例进行阐述,讲解透彻、易于掌握。本书既可作为初学者和大专院校师生的自学参考书,也可作为计算机软件开发人员的技术参考书。

2013-03-06

CKCalendarView

IOS之使用CKCalendar做datePicker,实现日历的一个下拉选择,通过实现代理方法可定制自己想要的功能,如不能选择当前日期之前/之后的。

2014-06-09

空空如也

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

TA关注的人

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