自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zcsoft

独立开发者,技术产品越野探险摄影

  • 博客(119)
  • 资源 (6)
  • 收藏
  • 关注

原创 在XCode中使用SwiftGen管理你的图片、配色、多语言文件等

SwiftGen是一个工具,可以为您的项目资源(如图像、本地化字符串等)自动生成Swift代码,然后你就可以像使用一个Class类一样访问你的资源了。而且添加或更新资源后,SwiftGen也会自动更新用于访问资源的Class类。对于管理图片、配色、多语言文件等十分方便。

2024-03-06 01:33:24 815

原创 WKWebView访问时不携带Cookie的解决方案

使用WKWebView框架开发h5的APP时,访问h5页面不携带Cookie的解决方法...

2024-01-08 02:29:24 496

原创 关于iOS Widget(Locket Widget App)

最近一款UI风格很像Clubhouse的App,功能简单到不能再简单的Locket app火了,其主要功能就是通过桌面Widget显示一张朋友分享的照片,死气沉沉的互联网上终于出现了一点新东西。其实widget的概念自从ios8(2014年)开始就已经有了,但是从Widget出现到现在,一直没有得到很多人的关注,所以什么是Widget?Widget能实现哪些功能呢?什么是widget一句话描述:widget就是App可以在主屏幕上显示一个功能简单的小插件。...

2022-04-28 20:35:56 4235

原创 使用Xib(Storyboard)布局UIScrollView - 以及解决has ambiguous scrollable content width/height问题

概要在xib中自动布局UIScrollView一直都是个挺麻烦的事。尤其从Xcode11开始,苹果对UIScrollView引入了“Content Layout Guides”,这导致默认情况下使用之前的方式布局会遇到“has ambiguous scrollable content width/height”错误。下面分别介绍一下如何关闭“Content Layout Guides”并继续使用老版本的布局方法,以及如何使用新方法进行布局。解决has ambiguous scrollable c

2021-08-24 20:43:34 2925 1

原创 包含UIWebView不能提交到商店的问题

1:首先搜索自己的项目,然后全删掉或者改用WKWebView;2:第三方尤其是pod包含了UIWebView的,从第三方里删除或改用WKWebView,例如一个很常见的库AFNetworking中就包含了UIWebView的扩展:-首先删除掉AFNetworking中的两个扩展文件(UIWebView+AFNetworking.h/UIWebView+AFNetworking.m);-然后注释掉UIKit+AFNetworking.h文件中的#import "UIWebView+AFNetwor

2021-07-13 18:35:34 409

原创 阿里云Ubuntu部署JavaWeb环境(ubuntu18.04)

之前写过一篇《阿里云Ubuntu部署java web》,详细记录了java、tomcat、mysql在ubuntu16.04版本上的安装和配置。最近新装服务器,发现20.04版本的ubuntu有些小变化。*以下内容仅针对20.04变更部分,详细配置请参考: https://blog.csdn.net/cuibo1123/article/details/390514651:更新源:目前ubuntu默认源就很好用,速度也很快,不在需要替换源位置,直接update即可sudo apt-get up

2020-12-23 13:31:48 375

原创 UITableViewCell高亮(按下)时,子视图背景色变透明的解决方法

UITableViewCell highlighted subviews backgroundColor自定义的UITableViewCell,在上面添加一个UIView(这里是UILabel),设置UILabel背景色。但是当cell处于按下状态时,UILabel背景色就会消失。如图(选中行的(2)背景色消失):其实这个问题的原因可以在文档里找到,(大意)当cell处于highlighted/s

2016-11-16 23:09:51 5132 2

原创 ios业务模块间互相跳转的解耦方案

一个app通常由许多个模块组成,所有模块之间免不了会相互调用,例如一个读书管理软件,可能会有书架、用户信息、图书详情等等模块,从用户信息-我读的书中,可以打开图书详情。而在图书详情-所在书架,又可以打开书架。一般这种需求我们可能会这实现:/*用户信息模块*/#import "UserViewController.h"#import "BookDetailViewController.h"@implementation UserViewController//跳转到图书详情+ (void)go

2016-03-30 17:58:06 13548 5

原创 快速理解Runtime of Objective-C

无论面试、论坛、群组...只要是跟ios开发有关的地方,到处都有runtime这个词。各种文章描述的神乎其技,就差把量子物理或者弦理论的知识也用上了。这么diao的东西到底是什么那?我们用最简单的方式来介绍一下,保证只要是猿类,就一定能听懂。

2016-03-28 11:11:45 1967 1

原创 科普:alphago是什么

鉴于大部分人类对alphago的认识:1:Alphago有什么了不起的?不就是算得快吗,ibm早在20年前就通过象棋战胜人类了,又是Google的一次营销。2:alphago 实现人工智能了,电脑马上要超过人类占领地球了。这两种想法哪个才是正确的那?严格地说,都不正确。所以我觉得非常有必要给非计算机行业的同学们科普一下。由于是一篇科普文,所以我们不讨论卷积神经网络或MCTS这些东西,对原理感兴趣的

2016-03-15 11:57:13 6329 2

原创 iOS集成微信支付的一些坑:onResp不回调、只显示一个确定按钮、闪回

iOS集成微信支付总体来说还是比较容易的(如果没有那些坑的话),关于:发起支付之后只显示一个确定按钮,没有任何错误提示,断点返回的Url Schemes,也只有一个ret=-2,官方文档解释为: “无需处理。发生场景:用户不支付了,点击取消,返回APP。”遇到这个问题,基本就是发起请求的参数传错了。

2016-03-03 18:36:06 12020

原创 App集成ApplePay的一些资料整理

首先apple pay不是苹果自己的事,所以,除了要看苹果的资料,把代码写进ios客户端app,还需要看银联的接口,把钱弄到你的卡里。而且发现银联的网站上居然有比苹果更易懂的文档,但是银联资料下载下来都是rar,我的mac打不开也是醉了。当然,除了银联你也可以选择连连首信易宝。我觉得看完下面这些连接就差不多能集成了:

2016-02-19 18:03:26 7958

翻译 iOS架构模式-揭秘MVC,MVP,MVVM和VIPER

iOS架构模式揭秘MVC,MVP,MVVM和VIPER在IOS中使用MVC感觉很奇怪?对切换到MVVM存在疑虑?听过VIPER,但是又不确定是否值得尝试?继续阅读,你会找到上面问题的答案,如果没有你想要的答案,你可以去评论里骂我。你将要开始学习一些有关ios架构模式的知识。我们将会简单的回顾一些当前受欢迎的架构模式,并在原理上对他们进行比较,然后做一些小例子来实践。如果你需要了解更多详细信息,我也

2016-02-17 17:35:19 5514

原创 ios9下照片浏览模糊的解决方法(ALAsset.thumbnail模糊)

在ios9下,使用ALAsset方式实现的照片浏览器都存在照片模糊的问题,但是目前能找到的大部分开源的照片浏览器都是使用这个框架编写的。    我们通常用以下方法获得照片缩略图:self.image = [UIImage imageWithCGImage:self.asset.thumbnail];调试发现,在ios8上,照片尺寸是150*150,而在ios9上,这个尺寸变成了75*75。查看ap

2015-10-12 18:59:13 8551 3

原创 UITableView判断reloadData结束(iOS)

如果在reloadDate后需要立即获取tableview的cell、高度,或者需要滚动tableview,那么,直接在reloadData后执行代码是有可能出问题的。reloadDate并不会等待tableview更新结束后才返回,而是立即返回,然后去计算表高度,获取cell等。如果表中的数据非常大,在一个run loop周期没执行完,这时,需要tableview视图数据的操作就会出问题了。ap

2015-09-18 23:46:45 22990 8

转载 UINavigationController返回手势失效问题

从iOS7开始,系统为UINavigationController提供了一个interactivePopGestureRecognizer用于右滑返回(pop),但是,如果自定了back button或者隐藏了navigationBar,该手势就失效了。这是为什么呢?原因我们知道,interactivePopGestureRecognizer从手势触发到行为发生,要经过下面的阶段:interact

2015-07-11 14:08:05 9561

原创 cocoapods工程路径变更后library not found解决方案

在使用cocoapods作为第三方库管理工程时,如果修改工程路径(重命名或剪切走),再次编译这个工程,会提示如下错误: ld: library not found for -lPods-**并且会在原来的路径下重新创建一个build目录。提示错误的原因大概就是项目去原始目录下寻找library了。尝试了清理工程,设置路径等等均未解决。最后把新路径(移动后的项目路径)下的build目录删除掉,在

2015-06-27 18:30:00 8662

原创 CocoaPods停在Analyzing dependencies的解决方案

现在很多开源项目都适用了cocoapod,这给集成第三方库带来了很多便利,在也不用去工程里设置哪些参数、依赖了。不过在执行pod update或者pod install时,经常会卡在Analyzing dependencies不动。这步其实是cocoapods在将他的信息下载到~/cocoapods目录下,可以进入这个目录后通过du -sh * 来查看下载进度,其中的内容就是托管在https://

2015-06-25 11:44:40 11367 2

原创 iOS人脸识别(检测)

iOS的CoreImage已经内建了人脸检测的接口,检测准确率一般,尤其是侧脸,基本上就检测不到。不过跟其他同类产品比较,也还算是不相上下吧。用起来很简单: CIImage* image = [CIImage imageWithCGImage:aImage.CGImage]; NSDictionary *opts = [NSDictionary dictionaryWi

2015-06-01 14:35:09 15154 7

原创 iOS使用Reveal分析他人app界面

不确定界面架构是否合理?最简单的办法就是看看别人是怎么做的,比如QQ。方法也比较简单,就是一个工具:Reveal。下面说说怎么用。测试环境:mac osx 10.10 / xcode 6.3 / ios7.1.2 / Reveal 1.5.1安装:    首先前往 http://revealapp.com/download/ 去下载文件,解压直接运行,就可以看到界面了。这里强烈建议把下载的Reve

2015-05-13 16:23:20 31081 3

原创 (iOS)判断GPS坐标是否在中国

由于火星坐标问题,所以需要判断一下经纬度是否在中国。基本思路是:把整个行政区域划分为几个小的矩形,然后再排除掉一些矩形区域。只要一个点在限定的区域内,并且不在排除的区域内,则判定成功,否则失败。下图中蓝色区域为限定区域,红色区域为排除区域。这种快速判定的方法是从Nokia map中挖掘出来的。优点:快速,相对准确;缺点:边界误差较大源码下载:https://github.com/zcsoft/ZC

2015-05-13 12:51:02 10118

原创 UITabBar和UINavigation组合使用与自定义样式(iOS)

UITabBarController和UINavigationController组合使用与自定义样式源代码github地址:https://github.com/zcsoft/ZCTabNav环境版本:mac 10.10 / ios7+ / xcode 6.3大部分APP的界面框架都需要UITabBarController和UINavigationController组合使用,自己的很多项目也都

2015-05-11 16:15:17 5298

原创 mac下抓取分析iphone数据包 - 使用Wireshark

mac系统版本:mac 10.10 Yosemitexcode版本:6.3.1在追踪bug或者分析借鉴其他公司的app通讯思路时,抓包这件事是非常有必要的。下面说说Wireshark怎么截获iphone的数据包。安装wiresharkwireshark是依赖x11的,所以首先确认安装了x11,mac自带,可以打开升级一下。 前往-实用工具-x11,打开后点击菜单栏上的x11,检查更新 即可。中间提

2015-05-08 16:05:41 11612 1

原创 微信源码结构(ios版)

最新的微信iOS端(6.1.2)程序包里出现了一些“神奇的片段”,看起来像极了源码结构,估计是xcode bug吧,话说之前在其他程序里貌似也碰到过,不废话了,分享一份:这份对查出来的结果进行了去重并排序,原始文件请git:https://github.com/zcsoft/MMStructure$HeadURL $Id0 /Users/*/Desktop/iPhone_Backup/tags/6

2015-03-25 22:00:06 16564 3

原创 使用ownCloud搭建你的个人云服务(ubuntu 14.04 server)

ownCloud是什么ownCloud是一个自由且开源的个人云存储解决方案(类似百度网盘或者Dropbox),包括两个部分:服务器和客户端。ownCloud在客户端可通过网页界面,或者安装专用的客户端软件来使用。网页界面当然就是任何能打开网页的平台都支持,而客户端软件也支持相当多平台,Windows、Linux、iOS、Android皆有。除了云存储之外,ownCloud也可用于同步行事历、电子邮

2015-03-08 01:15:26 28323

原创 SSH方式使用root登陆ubuntu14.04

1. 以其他账户登录,修改 root 密码  sudo passwd root2. 修改ssh配置  sudo vim /etc/ssh/sshd_config  注释行   #PermitRootLogin without-password  添加        PermitRootLogin yes3. 重启 ssh  服务  sudo service ssh restart

2015-03-01 23:01:05 2332

原创 架设自己的私有github+数据中心,并通过域名访问(支持adsl动态ip)

如果可以随时随地,用任何设备(手机电脑ipad)访问自己的所有工程,以及数据文件、歌曲、电影、照片等等,那该有多诱人呀,下面介绍一下具体方法。安装环境:ubuntu server 14.041:安装gitlab(开源的版本管理服务器,模仿github写的)下载安装gitlab官方说明文档:https://about.gitlab.com/downloads/安装gitlab前,首先需要安装open

2015-03-01 22:49:07 5899

原创 如何面试程序员

面试对于大多数开发人员来说是一项很基本的技能。一次失败的招聘会造成很严重的长期的后果,二流的人会把三流的人带进公司(一流人才雇一流人才,二流人才雇三流人才)。另一方面,把优秀的应聘者拒之门外更是一种伤害。    一场技术面试至少包括三部分。首先验证简历的真实性,然后评估应聘者的经验价值,最后测试应聘者的技术能力。1: 验证简历    简历上的任何东西都是假的,除非被证明。    简历中实际有价值的

2014-12-14 23:06:22 7634 14

原创 Xcode6编译SDWebImage报错原因分析(SDWebImageDownloaderOperation.m错误)

之前写了一片关于编译SDWebImage报错解决方法的文章:http://blog.csdn.net/cuibo1123/article/details/39434015结果很多人问这个问题的原因,那就在这里给大家说一说好了,分析思路一并送上(不过我还是建议大家自己动手去分析)。首先,如果新建工程,按照SDWebImage的方式声明输出口并引用:@interface ZCTest () @

2014-11-29 04:19:05 3813 3

原创 新ITC提交APP常见问题与解决方法(Icon Alpha,Build version,AppIcon120x120)(2014-11-17)

1)ICON无法上传,提示图片透明(有Alpha通道) 苹果现在不接受png里的Alpha了。简单处理:用自带的预览打开,导出时不勾选Alpha,仍保存为png格式,上传可行!但图标中透明的部分,会变成白色。2)Build版本    submit时出现如下错误:出现这个问题通常是因为之前上传过app但是没使用,第二次上传build版本冲突。修改软件的build版本大于之前版本即可(工程-属性-Ge

2014-11-17 06:40:09 6050

原创 Admob(6.12.x)符号未定义错误的解决方法(IOS)

在升级Admob的SDK版本到6.12.x时,按照官方文档操作(https://developers.google.com/mobile-ads-sdk/docs/#ios),添加如下framework:StoreKitAudioToolboxMessageUISystemConfigurationCoreGraphicsAdSupport之后将-ObjC添加至应用目标构建设置中的Oth

2014-11-17 02:25:10 3335

原创 使用NSCondition实现多线程同步

iOS中实现多线程技术有很多方法。这里说说使用NSCondition实现多线程同步的问题,也就是解决生产者消费者问题(如收发同步等等)。问题流程如下:    消费者取得锁,取产品,如果没有,则wait,这时会释放锁,直到有线程唤醒它去消费产品;    生产者制造产品,首先也要取得锁,然后生产,再发signal,这样可唤醒wait的消费者。这里需要注意wait和signal的问题:    1: 其实

2014-11-12 13:03:54 7165

原创 解决NSData转NSString返回nil的问题

在使用initWithData等方法将NSData转换成NSString时,如果NSData的内容含有非encoding编码的字符,将会返回nil。这个结果在很多时候可能并不是我们所希望的,比如在获取网页源码进行分析等方面,如果页面采用了utf-8编码,只是含有个别非utf-8字符,我们更希望转换NSString成功,抛弃(或替换)那些非法字符。按照utf-8协议;如果一个字节小于0x80,那么他就是一个字符;如果大于C0小于E0,表示2个字节组成的utf8字符(第一个是110开头的,第二个是10开头

2014-11-09 02:17:38 33096 2

翻译 组件接口(API)设计指南[5]-最后的思考

*返回目录阅读其他章节: http://blog.csdn.net/cuibo1123/article/details/39894477最后的思考    我通过困难的学习以及多年的失误,写了这片篇关于创建组件和api规则的文章。我在试着练习我的写作能力,虽然不可避免地会出现很多我没有提及的例子。    不是所有的规则都适用于所有情况,也没有一条规则在任何情况下适用。这里只是尽可能多的给你一些灵感,

2014-10-10 15:27:21 2547

翻译 组件接口(API)设计指南[4]-通知(Notifications)

规则23: 通知跟随委托方法 在委托方法(适当的,不是数据源方法)和通知之间存在着天生的对应关系。你可以在你代码的任何地方使用他们,而达到完全相同的目的。 如果你有一个关于事件发生的委托,你通常也应该提供一个同样目的的通知。做到即使把委托方法全部移除,使用者也依然可以通过通知来实现相应功能。 委托方法的参数应该与通知的‘userInfo(通知附加值)’内容匹配,通知与您在委托中直接传递参数有一个明显的区别,它通常需要将信息装载到字典(NSDictionary)中。 委托方法:

2014-10-10 15:23:39 2539

翻译 组件接口(API)设计指南[3]-委托(delegate)和数据源协议(data-source protocols)

我们几乎可以在任何组件中利用经典的委托(delegate)和数据源协议(data-source protocols)。如果你想显示一些数据,那么数据源协议可能就非常适合你,例如你有以下问题: 1:我有很多事物(有很多条数据)。 2:设置每个事物(数据)X的成员Y的值。 同样,在几乎所有情况下,一个经典的委托(delegate)协议形式如下: 1:这件事应当做吗(一个动作发生前,通常调用一个带有返回值的委托方法,决定动作是否执行)? 2:

2014-10-09 14:29:17 3688

翻译 组件接口(API)设计指南[2]-类接口(class interface)

规则1:使用当前平台的描述用语或构架 一个最常见的API错误设计是使用外来的规则,API属于一个特定的平台和相关开发者生态系统。你不能使用任何其他不同平台的描述用语或构架,这会污染你当前的代码库,并破坏你同伴的工作效率。 在编码前要充分了解你的目标平台和代码规范。例如,在IOS和OSX中,不使用异常机制处理错误。统一命名规则(规则要足够详细,但是也要足够简洁)。 了解什么是协议(protocol),委托(delegate),扩展(category)。始终在你的代码中使用术语。遵守构造

2014-10-08 16:23:49 3867

翻译 组件接口(API)设计指南[1]-要考虑的问题

开发人员与组件的显式交互主要有四种: 1. 类接口(classinterface),类公开的属性和方法。 2.委托协议(delegateprotocol),在相关的地方。 3.数据源协议(data-sourceprotocol),酌情。 4.规定的通知(notifications)。 我们设计的每一种交互,都应该需要用户刻意的去使用,不要做隐式的交互调用。另外,你应当思考两个关键问题: ○ 什么是控制?控制会影响界面和类方法。它影响的界面是显而易见的,比如一个按钮,或者一个滑块。而

2014-10-08 15:58:41 4663

翻译 组件接口(API)设计指南-目录

组件接口(API)设计指南-目录; 组件接口(API)设计指南[1]-要考虑的问题; 组件接口(API)设计指南[2]-类接口(class interface); 组件接口(API)设计指南[3]-委托(delegate)和数据源协议(data-source protocols); 组件接口(API)设计指南[4]-通知(Notifications); 组件接口(API)设计指南[5]-最后的思考;

2014-10-08 15:54:04 5813

翻译 在xcode6中使用矢量图(iPhone6置配UI)

不管是iphone6还是iphone5,所有ios8设备均加载@3x图像,@2x图像不被加载。使用图像文件和XCAsset均不行,stackoverflow上也很多人问这个问题,不知道是不是ios8的bug。(2014年9月23日测试) 3: 关于文中第一个工具:xcode6和ios8支持以Storyboard(或xib)作为Launch(启动)界面。只需要创建xib,然后在项目General里设置即可。使用Storyboard作为启动界面只支持ios8,在ios8以下不显示,但是可以和i

2014-09-23 02:50:33 29761 3

AppStore审核指南(2014中文)

AppStore审核指南(2014中文)

2014-11-30

objective-c启用ARC时的内存管理

在objective-c中,内存的引用计数一直是一个让人比较头疼的问题。尤其是当引用计数涉及到arc、blocks等等的时候。似乎ARC的出现只是让我们解放了双手,由于底层实现依然依赖引用计数,所以开启ARC后,只有对引用计数机制更加了解,才能避免Cycle Retain、Crash等问题的出现。

2014-06-04

linux目录作用详解(超详细,树状排版)

自己在网上找了好久,没找到,干脆自己做一个。给大家分享下,希望能顺便指出我的错误。请复制到记事本,然后取消自动换行。看起来就会很清晰了。 / 根目录 │ ├boot/ 启动文件。Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录; │ └grub/ Grub引导器相关的文件 │ ├dev/ 设备文件。设备文件用特定的约定命名,这在设备列表中说明 (见[Anv])。设备文件在安装是产生,以后可以用 /dev/MAKEDEV 描述。 /dev/MAKEDEV.local 是系统管理员为本地设备文件(或连接)写的描述文稿 (即如一些非标准设备驱动不是标准MAKEDEV 的一部分)。 ├opt/ 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。 ├proc/ 是一个假的文件系统。它不存在在磁盘某个磁盘上。而是由核心在内存中产生。用于提供关于系统的信息(originally about processes, hence the name)。/proc 文件系统在proc man页中有更详细的说明。.......

2008-07-03

关于程序设计的内存分配问题

不明白内存分配和指针的可以看看,其实这本是我们老师留的一个操作系统科技小论文作业,不知道写什么,干脆把以前收藏的经典C内存分配的文章整理并修改了一下。 此文章有2个用处, 1:这是个小论文,格式完整,大家可以复制回去交作业; 2:这是整理的经典C内存分配小教程(也加了些我自己的观点),不明白内存分配的可以看看。<br><br>还有很重要的一个问题: 这篇文章引用的很多内容我也不知道究竟是出自谁手,知道作者是谁的麻烦告诉下,我好谢谢他。(记得都是csdn里面找的)<br><br>tag: 操作系统 论文 内存分配 内存对齐 c语言内存分配 免费论文下载.doc

2008-06-14

vim用户手册中文版7.1

vim用户手册中文版7.1<br>免费下载哦

2008-05-11

linux图形界面汉诺塔源程序(c,oop)

程序组成: 程序有两套可选方案。 1:字符界面,只涉及内部运算。 2:图形界面,具有图形实时显示功能。 文件说明: 设计思路:驱动程序->智能模拟->操作对象 通用部分: shell.c :外壳,组织程序运行,对用户输入的数据进行检测; ai.h :智能模拟-移动汉诺塔; ai.c :汉诺塔移动思想的实现; 方案1:字符界面 datastruct.h :汉诺塔实体模拟-结构形式及可对塔进行的操作; datastruct.c :汉诺塔结构与可进行的操作的实现方法; 方案2:图形界面 graphics.h :汉诺塔实体模拟-结构形式及可对塔进行的操作; graphics.c :汉诺塔实体模拟-结构形式及可对塔进行的操作; 压缩包内有说明文件。 程序编写:free.月满西楼 msn:[email protected] E-mail:[email protected]

2007-12-25

空空如也

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

TA关注的人

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