自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (2)
  • 收藏
  • 关注

原创 用Swift搭建API Server,Vapor + PostgreSQL + Docker + ECS + OSS

阅读前: 您应该具备Swift、Vapor、Docker、服务器、存储服务器等相关概念的基本知识。 本文不涉及全面的知识点,只针对开发、部署中的常见问题和注意事项进行说明。 一、Vapor1.项目文件结构如下...

2021-05-26 15:33:27 876 1

原创 iOS Swift 绘制PDF,超长字符串分页绘制

最近自己做个小项目,需要把数据绘制成PDF打印出来。在研究PDF绘制的过程中,发现国内在这方面很难搜到优质有深度的内容,尤其是超长字符串分页绘制,基本没找到解决方案(我使用的原生方法绘制,所以不考虑使用HTML的情况)。无奈去google,在stackover上找到一篇帖子,根据它的思路,终于实现了基础功能。使用PDFKit,绘制部分基本都是CoreGraphics,多行文字分页绘制使用了CoreText。具体代码如下:这是数据模型,主要记录每天早中晚饭,几点,吃的什么。/// 组数据

2021-04-02 11:46:35 652

原创 Button 随 ScrollView 滚动 划入划出

// ScrollView Delegate 中// MARK: - 发送按钮滑动动画 /// 滑动时隐藏按钮,需判断滑动范围,和是否拖动。否则下拉刷新、push进其他页后再回到本页会导致按钮隐藏,而停止方法未调用,按钮隐藏后没有自动出现的bug。 func scrollViewDidScroll(_ scrollView: UIScrollView) { if scrollView.contentOffset.y > 0 { i.

2021-04-02 11:24:57 180

原创 NSMutableAttributeString中,由于表情导致string count 计算不准确问题

正确用法:attrStr.addAttribute(.foregroundColor, value:JFColors.title, range:NSRange(location:0, length: replyModel.content.utf16.count))NSMutableAttributeString,在添加attribute时,Range计算使用str.count,当string中有表情时,count计算不准确,导致异常。解决办法:使用string.utf16.count计算s...

2021-04-02 11:22:42 231

原创 EdgeInsetLabel 支持文字缩进的Label

开发时,经常出现Label需要文字缩进的情况。比如一个label需要圆角,文字居中,带颜色的背景,左右两边需要留出距离,这样出来的效果才好看。如下图EdgeInsetLabel,可以轻松实现文字缩进的效果。并且支持在storyboard和xib中直接配置,直接显示出最终效果。//// EdgeInsetLabel.swift//// Created by pilgrim on 2017/4/27.//import UIKit/// - 版本/// - V1.0.0

2021-03-04 14:09:45 267 1

原创 iOS 类似聊天页面 tableView在出现时自动滚动到底部(不闪动,无痕)

iOS在开发类似聊天的页面时,需要进入页面,直接展示最新的数据。而最新数据在最底部,因此需要一进入页面,tableView直接展示在最底部位置。滚动代码:self.tableView.scrollToRow(at: IndexPath(row: tempModels.count - 1, section: 0), at: .bottom, animated: false)只能在viewDidAppear中调用,在viewDidLoad中或viewWillAppear中调用,不起作用。而在viewDidA

2021-01-28 16:05:25 1595

原创 自己整理的iOS面试题

由于之前在公司负责技术面试,因此整理了一份面试题。现在自己也要找工作了,正好看看复习一下相关知识。1.Block循环引用问题,OC怎么解决?Swift怎么解决?UIView animation为什么没有循环引用?Block有几种类型?(GlobalBlock StackBlock MallocBlock)__weak和__block区别?(__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。__weak只能在ARC模式下使用,也只能修饰对...

2020-10-27 11:55:14 325

原创 iOS 优秀博客集合(持续更新,欢迎推荐)

这里是一些自己收集的比较好的技术博客,工作不忙或者闲暇时间可以看看,提升技术储备。闲鱼技术 Flutter相关:https://juejin.im/user/5ac2db47f265da2393774122/posts唐巧的博客:http://blog.devtang.com/archives/王巍的博客:https://onevcat.com/#blog滴滴出行 戴铭的博客...

2019-03-28 14:20:41 687

转载 Linking Objective-C Code

转载自:https://pewpewthespells.com//blog/objc_linker_flags.htmlRecently a conversation on came up on twitter as to the significance of the-ObjClinker flag and why this is important for us to us...

2019-03-28 14:17:52 319

转载 关于Swift中的指针的那些事

前言在Objective-c的世界中,一切对象都是指针。它是一种运行时语言,具体指针的对象类型将会在运行时,由系统分配。这样虽然自由,但是却并不安全。Swift世界就不一样了,Swift的世界很安全(至少大部分时候情况如此)。我们不必为对象运行时的类型担忧,这是Swift为我们构筑的一层堡垒。但是在一些时候,这层堡垒也成为束缚我们行为的操作。正文Swift也为操作指针这种不安全行为...

2019-03-28 14:13:35 218

转载 版本号管理:Semantic Versioning

转载自:https://semver.org/lang/zh-CN/​​​​​​​语义化版本 2.0.0摘要版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的...

2019-03-28 14:03:01 377

原创 iOS 检查接口参数是否和文档一致,防止疏忽导致书写错误的一些思考

在iOS开发过程中,我们在编码Server接口的时候,不可避免的要硬编码一些接口名、参数key等文档中定义的内容。而怎么防止由于人的原因,编码意识模糊一时大意导致这些硬编码出错的问题?暂时想到了两种方式,一种静态,一种动态。1.静态处理的方式,需要开发人员在编码过程中,在接口代码编写时需遵循某种指定的格式,或添加某些指定的注释或标记。然后通过shell脚本,在Xcode的run scrip...

2019-03-28 14:00:27 451

原创 从MVC到MVVM,团队过渡方案:MVVM+Delegate实现

此实现方式为并不完全的MVVM,绑定耦合性较高。架构更偏向于MVP。只是因为团队对于MVVM和RxSwift or RAC不熟悉,RxSwift or RAC学习成本较高,此实现方式为中间过渡状态。通过delegate形式实现反向绑定,容易理解,在本次项目中,让团队成员有更无痛的方式体验MVVM并逐步掌握此架构分层思想。待熟练掌握MVVM结构后,后续项目逐步使用RxSwift开发。 ...

2018-08-20 14:50:35 388

原创 Swift中的 RSA Sign

项目中,使用了Https+RSA Sign的认证方式实现方式为使用了Github开源库SecrecySwift,但此项目有一段时间没有人维护,按照readme中的集成方式,在新的Xcode9.4 or Swift4中不能在真机中正常运行。修复方式如下:Xcode 9.3, Swift 4项目, 引入此项目,按readme中的直接部署源码的方式已无法正常运行。解决办法:1.删除C...

2018-08-20 14:45:15 1382

原创 约瑟夫问题 算法 数据结构 循环单链表

// MARK: - 约瑟夫问题// 链表节点class Node: NSObject { var next: Node? var value: Int?}// 人的编号var i = 1// 头节点let headNode = Node()headNode.value = 1// 总人数let m = 12// 创建循环单链表func genera...

2018-08-20 14:34:36 281

原创 Jenkins报错unknown error -1=ffffffffffffffff

The following build commands failed:PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/HiCashLoan-djgcxytxmkppgudzvpihaseqoxea/Build/Interme...

2018-08-20 14:32:24 1537

转载 关于反调试&反反调试那些事

前言在逆向和保护的过程中,总会涉及到反调试和反反调试的问题,这篇文章主要是总结一下几种常见的反调试手段以及反反调试的方法。反调试ptrace为了方便应用软件的开发和调试,从Unix的早期版本开始就提供了一种对运行中的进程进行跟踪和控制的手段,那就是系统调用ptrace()。通过ptrace可以对另一个进程实现调试跟踪,同时ptrace还提供了一个非常有用的参数那就是PT_D

2017-11-29 14:15:54 1876

原创 逆向工具(待研究)

HookZz:https://github.com/jmpews/HookZzAppleTrace:https://github.com/everettjf/AppleTraceMachOExplorer:https://github.com/everettjf/MachOExplorerMachOView:https://github.com/gdbinit/MachOViewM

2017-11-29 14:14:54 376

转载 越狱检测/越狱检测绕过—xCon

http://www.freebuf.com/articles/wireless/6318.html一直忽略了越狱检测与越狱检测绕过的问题,因为我认为在app争抢装机率的环境下,是不会在乎对方的设备越狱与否的。但很显然,我忽略了一个问题,app在设计的时候或许会依照设备是否越狱而采取不同的流程,比如说对越狱的设备采取更多的安全措施,在这种场景下,越狱检测是否可靠就成为了关键问题。本篇文

2017-11-29 14:13:48 4560

转载 利用 HookZz 实现反调试与绕过的奇淫技巧

地址:https://bbs.pediy.com/thread-220795.htm任何带特征的检测都是不安全的 & 隐而不发(Ouroboros)Move to AntiDebugBypass on github代码依赖于 HookZz, 一个 hook 框架## 前言对于应用安全甲方一般会在这三个方面做防御.按逻辑分类的话应该应该分为这几类, 但如果从实

2017-11-29 14:13:06 3249

原创 更新Xcode9后,tweak make失败

把/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/System/Library/Frameworks/  里面相应的库的头文件,更新到/opt/theos/include或者/opt/iOSOpenDev/include上述方

2017-11-29 14:12:26 343

原创 美团逆向-干掉反动态调试

http://www.jianshu.com/p/28fc728f762chttp://blog.csdn.net/zhangmiaoping23/article/details/34501837http://bbs.iosre.com/t/7-2-0-ios/770http://bbs.iosre.com/t/sub-xxxxx-hook/1294

2017-11-29 14:11:15 2349

原创 Swift单元测试XCTest

创建项目的时候可以勾选UnitTest选项,系统会自动生成Test Target,没有勾选的也可以自行创建Test Target1、对于OC混编的项目,Test工程会报找不到头文件错误。需要在Test Target的build setting中配置bridging-header。2、对于CocoaPods引入的第三方库,也会报找不到,可以在Podfile中增加KuaiTests部分

2017-09-12 16:57:52 1263

原创 UIImage+GIF.swift SDWebImage中处理GIF的分类的swift版实现

////  UIImage+GIF.swift//  swiftPractise////  Created by 云君 on 2017/6/5.//  Copyright © 2017年 pilgrim. All rights reserved.//import Foundationimport UIKitimpo

2017-09-12 16:56:37 718

转载 几个常用的Swift Extension:防止按钮重复点击、增加友盟页面统计、Dispatch_once Swift实现

//  防止按钮重复点击//  UIButton+extension.swift////  Created by pilgrim on 2017/2/23.//  Copyright © 2017年 pilgrim. All rights reserved.//import UIKit// 默认间隔时间file

2017-02-23 12:07:30 1901

转载 极客学院:iOS安全攻防

转载自:http://wiki.jikexueyuan.com/project/ios-security-defense/

2017-02-23 12:02:19 665

转载 iOS逆向:破解 APP防止dyld注入 的方法

转载自:http://bbs.iosre.com/t/tweak-app-app-tweak/438

2017-02-23 11:59:23 5867

转载 iOS安全:防止dyld注入

转载地址:https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.htmlBlocking Code Injection on iOS and OS XYesterday I posted (twitter) a set of linker flags that can be set th

2017-02-23 11:56:44 684

原创 常用类:BaseTabBarController

自定义的TabBarController,增加控制器、修改图标、背景颜色、选中颜色等等////  BaseTabBarController.swift//importUIKitclassBaseTabBarController:UITabBarController {    override func viewDidLoad(

2016-12-07 17:47:17 761

转载 用 Swift 实现轻量的属性监听系统

注:会不会有内存问题。block调用一个页面的UI内容,并被另一个页面保存住。需要注意弱引用,有待测试。本文的主要目的是解决客户端开发中对“模型的一处修改,UI 要多处更新”的问题。当然,我们要知晓解决方案的细节和思考过程,以及看到其能达到的效果。我们会用到函数式编程的思想,以及伟大的“泛型”。请相信我,我们并非为了使用新技术而使用新技术。如果一个问题有更好的方法去解决,那为何不替换掉

2016-12-07 17:44:01 328

转载 Swift Style Guide

copy from https://github.com/linkedin/swift-style-guideSwift Style GuideMake sure to read Apple's API Design Guidelines.Specifics from these guidelines + additional remarks are mentioned below

2016-12-07 17:43:19 406

原创 iOS AFN 封装POST网络请求(AFURLSessionManager) (续二) download下载方法

progress:nil接上一篇文章,增加下载方法,如需要进度,在这里 progress:nil 传入progress对象就行了- (void)downloadTaskWithURL:(NSURL *)URL destination:(void(^)(NSURL *targetPath, NSURLResponse *response))destination comple

2016-06-17 17:23:23 1030

原创 CoreData的多线程存储(代码)

上次分享了一篇关于CoreData多线程使用的文章,这次直接上代码。Talk is cheap, show me the code!1.首先初始化CoreData数据库//加载模型文件   NSManagedObjectModel*model = [NSManagedObjectModelmergedModelFromBundles:nil]; 

2016-06-17 17:05:12 676

原创 iOS 使用XMPP框架开发IM聊天模块,实现简单的文字聊天

首先,还是先搭建一个测试服务器吧。参考网址:http://code.tutsplus.com/tutorials/building-a-jabber-client-for-ios-server-setup--mobile-6958搭建eJabberd服务器,mac系统安装包下载地址:http://pan.baidu.com/s/1dFgADOX按照教程来走,有不一样的百度一下,基本

2016-06-15 14:41:42 2362

原创 iOS 简单的视频直播功能开发(实时视音频流录制编码+RTMP传输+实时拉流解码播放)

推流端:自己开发难度很大,视频直播就被卡死了,音频根本没来得及弄,最终使用了github上开源的框架。               原生开发基本流程:AVFoundation获取视频流,得到未编码的CMSampleBuffer,需要编码成Mpeg-4格式。编码分软编码和硬编码,考虑到iOS8之后VideoToolBox开放使用,选用VideoToolBox进行编码。坑爹的是针对它连

2016-06-15 14:08:05 11337 3

转载 编译libRTMP(RTMPdump) For iOS

参考网址:http://blog.csdn.net/cjj198561/article/details/289554611.编译librtmp需要先编译openssl,因为librtmp依赖openssl首先编译openssl:(去openssl网站下载所需文件,当前稳定版本为openssl-1.0.2h.tar.gz),下面为已经下好的附件。http:

2016-06-15 13:57:19 1626

转载 TextKit介绍(转载3篇文章)

TextKit以前,如果我们想实现如上图所示复杂的文本排版:显示不同样式的文本、图片和文字混排,你可能就需要借助于UIWebView或者深入研究一下Core Text。在iOS6中,UILabel、UITextField、UITextView增加了一个NSAttributedString属性,可以稍微解决一些排版问题,但是支持的力度还不够。现在Text Kit完全改变了这种现状。1

2016-06-15 13:45:06 1077

原创 iOS 二维码、条码扫描(带UI)

下面代码中待解决的问题:扫码过程中被打断(如按Home键),扫描动画会停止,需要做相应处理,在恢复前台时恢复动画。摄像头扫码使用iOS原生框架,从图片导入识别二维码使用ZXingObjC框架////  BarCodeViewController.h// ////  Created by pilgrim on 16/5/11.//  Copyright © 2016年

2016-06-15 13:38:22 1222

原创 iOS导航栏随滑动渐隐渐现且不影响push页面导航栏的实现方式

//自定义导航栏视图@property(nonatomic,strong)UIView * naviView;viewDidLoad中:if([selfrespondsToSelector:@selector(setEdgesForExtendedLayout:)])    {        [selfsetEdgesFo

2016-06-15 13:32:41 2601

原创 iOS 心电图绘制Demo

iOS 心电图绘制的demo,根据网上找的第三方框架修改的版本,数据是竖着读的,一共七组图型。kMaxContainerCapacity的值改成了950,因为原来的框架1000的话,是满屏的,没有刷新效果,改成950后,有50个点的间隙,会出现刷新的效果。此demo仅为功能验证版本,仅供参考。demo下载地址:http://pan.baidu.com/s/1i4OlADn

2016-06-15 12:08:29 4651

Data Structures and Algorithms in Swift.pdf

Swift语言写的数据结构与算法。Data Structures and Algorithms in Swift

2021-05-25

空空如也

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

TA关注的人

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