XCode
文章平均质量分 66
M.François
Learning code by doing more projects as many as you can.
展开
-
Swift基础
当前版本:Swift 5.9。原创 2023-10-26 10:38:51 · 280 阅读 · 0 评论 -
iOS UIImage等比缩放、转到横屏的图片到垂直模式、重制大小resize
UIImage等比缩放分类方法@implementation UIImage (Cat)// 计算等比缩放图片的size- (CGSize)equalRatioComputeImageWithTargetWidth:(CGFloat)targetWidth targetHeight:(CGFloat)targetHeight { CGFloat originalWidth = self.size.width; CGFloat originalHeight = self.size.h原创 2021-04-14 17:24:35 · 717 阅读 · 0 评论 -
牛客网算法题:给定一个字符串,计算从做到右的字符出现的个数
题目:给定一个字符串,计算出从做到右的字符出现的个数忽略字符计算后个数为1的数字例如原始输入字符串:"aabccccaaa"期望输出: “a2bc4a3”解释:从左到右,a出现了2次,记为a2;b出现了1次,记为b;c出现了4次,记为c4;再a出现了3次,记为a3。结果就是:a2bc4a3以Swift语言实现如下class TestA: NSObject { private var lowerLetters: [String: Int] = ["a":0, "b原创 2020-08-31 11:47:20 · 506 阅读 · 0 评论 -
C语言旋转数组-转圈打印数组
// 旋转数组void rotateArray(size_t rows, size_t cols, size_t arr[4][4]) { size_t rotated[rows][cols]; for (size_t i = 0; i < rows; i++) { for (size_t j = 0; j < cols; j++) { // rotated[i][j] = a[n - j - 1][i]; // 顺时针翻转原创 2020-08-06 20:57:50 · 1051 阅读 · 0 评论 -
单链表的翻转
单链表的翻转// 链表定义struct SingleLinkedList { int value; struct SingleLinkedList *next;};// 打印链表中的数据void printAllNodes(struct SingleLinkedList *head) { printf("%d \t", head->value); if (head->next == NULL) { return; } p原创 2020-08-06 20:55:35 · 237 阅读 · 0 评论 -
二叉树的遍历/递归/非递归/翻转
二叉树的定义// 定义一个二叉树节点struct BiTreeNode { int value; struct BiTreeNode *left; struct BiTreeNode *right;};先序遍历 (递归的形式)void preOrderTraversal(struct BiTreeNode *node) { if (node != NULL) { printf("%d", node->value); // 先序遍历原创 2020-08-06 20:45:36 · 245 阅读 · 0 评论 -
iOS的文件校验码生成 - ObjC编写
一般我们比较文件的完整性,就是对文件进行哈希计算,通常就是MD5或者SHA256或者SHA1计算,如果生成的结果字符串是一样的,则表明文件没有被篡改比如我们在网络上下载的安装包,下载时都会提示MD5或者SHA1的校验码是多少?有没有想过校验码是如何生成的了?以下就是用Objective-C来对文件计算checksum即校验码是否 服务器端存储的一致,如果是一致的,则表示文件是完整的#import "FileChecksumUtil.h"#import <CommonCrypto/CommonDi原创 2020-08-05 21:30:34 · 372 阅读 · 0 评论 -
显示macOS的隐藏文件
在指定的目录下按下以下快捷键,即可显示所有的隐藏文件CMD + SHIFT + .原创 2020-07-15 11:07:30 · 229 阅读 · 0 评论 -
Xcode DeviceSupport iOS 13.4.1 (17E262)
下载地址:https://github.com/filsv/iPhoneOSDeviceSupport各种版本都有重启Xcode就好了原创 2020-04-15 19:41:17 · 6854 阅读 · 1 评论 -
HTTPS原理-使用-请求拦截-防止拦截-动态调试HTTP请求
HTTPS (全称:HyperText Transfer Protocol over Secure Socket Layer)Google 很早就使用了HTTPS,主要是为了保证用户的数据安全。 Google、Baidu、Facebook 、字节跳动这样的互联网巨头,都在广泛使用HTTPS搭建网站、接口、服务等, 国内外的大型互联网公司很多也都已经启用了全站 HTTPS,这也是程序员学习http...原创 2020-04-10 15:16:19 · 9666 阅读 · 1 评论 -
Xcode 11无法成功安装Cocoapods的原因和解决方案: mkmf.rb can't find header files for ruby at xxx
错误信息mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h我主要是新买的macbook pro,安装了XCode 11,然后就遇到这个安装Cocoapods的错误,之前从来没有遇到过后来经...原创 2020-03-04 20:15:26 · 1876 阅读 · 0 评论 -
适配 iOS 13 设置 deviceToken
在 iOS 13 之前的版本使用下面代码可以将获取到的 deviceToken,转为 NSString 类型,并去掉其中的空格和尖括号,作为参数传入 setDeviceToken: 方法中。- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSDat...原创 2019-12-27 21:05:03 · 1436 阅读 · 0 评论 -
iOS攻防 - (一)Reveal 调试别人开发的app,如微信
1.准备工作 越狱手机一台 通过越狱iPhone上的Cydia软件,下载并安装Reveal Loader MacOS和该iPhone同处于一个WiFi环境下2.设备环境越狱的iPhone版本iOS 8.2Reveal 版本 7,下载地址 https://revealapp.com/download/#direct3.使用SSH登录到越狱的手原创 2017-04-27 17:19:50 · 4516 阅读 · 0 评论 -
iOS攻防 - (九)将iOS应用注入dylib和hook后,重新签名并打包
iOS攻防 - (八)将iOS应用hook和注入dylib后,重新签名并打包1.下载微信,并解密WeChat.ipa我的本篇博客已经讲过,此处不再赘述 ;http://blog.csdn.net/u013538542/article/details/726976472.查看解密后的微信的基本信息通过cd命令到解密后微信的目录,名称com.tencent.xin-iOS7.0-(Clutch-2.0.原创 2017-05-27 20:12:44 · 10182 阅读 · 2 评论 -
iOS攻防 - (四)iOS应用防止被GDB附加到进程
GDB/LLDB 动态调试iOS应用LLDB官方文档:https://lldb.llvm.org/tutorial.htmlGDB文档:https://www.cs.cmu.edu/~gilpin/tutorial/准备工作1.越狱iPhone一台2.安装OpenSSH, 在Cydia里搜索并安装,目的是:从MacOS连接到iPhone3.安装adv-cmds, 在Cydia里搜索并安装...原创 2017-05-24 13:36:12 · 2120 阅读 · 0 评论 -
iOS攻防 - (二)iOS应用敏感逻辑的保护方案
Objective-C 代码容易被 hook,暴露信息太赤裸裸,为了安全,改用 C 来写吧!当然不是全部代码都要 C 来写,我指的是敏感业务逻辑代码。 本文就介绍一种低学习成本的,简易的,Objective-C 逻辑代码重写为 C 代码的办法。也许,程序中存在一个类似这样的类:@interface XXUtil : NSObject + (BOOL)isV转载 2017-05-02 11:07:20 · 910 阅读 · 0 评论 -
RSA例子在iOS/C#中使用
这一篇是我写的RSA的使用详情http://www.googleplus.party/2017/03/31/RSA-Example-in-iOS-C/而且我还封装了一套使用RSA的库在github上,支持Cocoapods在iOShttps://github.com/VictorZhang2014/ZRCryptographyOC原创 2017-04-05 10:19:36 · 695 阅读 · 0 评论 -
iOS 继续播放或暂时其他app的背景音乐
问题:当我们自己开发的应用要使用AVAudioSession时,可能会中断其它应用的音乐播放,例如:QQ音乐,酷我音乐等?解决方案:当我们自己开发的应用播放时,暂停其他应用的播放,当我们的应用播放完毕时,继续其他应用的播放,实现代码如下#import "VLAudioSessionControl.h"#import @implementation VLAudioSes原创 2017-04-05 18:23:17 · 11807 阅读 · 0 评论 -
iOS 10 个实用小技巧(总有你不知道的和你会用到的)
https://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=2652155974&idx=2&sn=c43fd2c363333c98265ee1288628c35d&chksm=8046d027b7315931349a2f60cb5d7ddd61b5662ff52dc69eb50e17cea6b120e946b0e766c278&mpshare=1&转载 2017-03-06 14:32:38 · 540 阅读 · 0 评论 -
iOS的runtime获取类的属性的数据类型
iOS的runtime获取类的属性的数据类型#import "NSString+Property.h"#import <objc/runtime.h>#include <string.h>@implementation NSString (Property)/** * Get the data type of a property in a class * @designatedClass,原创 2017-07-03 11:37:32 · 3724 阅读 · 0 评论 -
Apple Developer Program注册设备满了100台,如何移除?
讨论主题:Apple Developer Program注册设备满了100台,如何移除?唯一的解决方案:1.使用Apple开发者账号的代理人(Agent) 拨打Apple开发者电话, 400-670-1855 2.告诉客服,你想移除哪个开发者账号的注册设备,一般他们会让你等待几分钟,核实你的相关信息,如果一切信息没有问题的话,客服会告诉你,半小时内会发一封邮件给你,并且在 ht原创 2017-01-24 12:10:33 · 8301 阅读 · 0 评论 -
iOS攻防 - (十一)CydiaSubstrate的介绍
CydiaSubstrate介绍1. 概述CydiaSubstrate是大多数tweaks工程的基础,又MobileHooker,MobileLoader,Safe Mode组成看这篇文章之前,请先看完,并实践本篇内容 http://blog.csdn.net/u013538542/article/details/728111422. MobileHookerMobileHooker经常被用来替换系原创 2017-06-02 20:07:54 · 3824 阅读 · 0 评论 -
微信移动端数据库组件WCDB系列(一)-iOS基础篇
前言==================================WCDB(WeChat DataBase)是微信官方的移动端数据库组件,致力于提供一个高效、易用、完整的移动端存储方案。 它包含三个模块: WCDB-iOS/Mac WCDB-Android 数据库损坏修复工具WCDBRepair 目前正在筹备开源中。背景================================转载 2017-06-19 10:25:04 · 2494 阅读 · 0 评论 -
iOS攻防 - (十二)LLDB和DebugServer配合使用
iOS攻防 - (十二)LLDB和DebugServer配合使用1.介绍debugserver是运行在iOS上。从它的名字你就能看出,debugserver扮演着一个服务器的角色,可以执行在MAC OS X客户端执行LLDB命令,并把结果反映到终端界面上,通常也成为”remote debugging”远程调试。debugserver默认在iOS系统里是没有的,但是,只要我们用Xcode在iPhone原创 2017-06-03 18:00:25 · 3218 阅读 · 0 评论 -
Presenting view controllers on detached view controllers is discouraged的解决方案
问题:Presenting view controllers on detached view controllers is discouraged 原因:因为使用了两次及以上的present视图,也就是模态两次或及以上次数,就会警告以上的这个错误解决方案: 1. 避免使用两次以上的present视图 2. 以下代码也可以[[[[UIApplication原创 2016-02-10 21:10:18 · 1095 阅读 · 0 评论 -
UIApplication(BTGMethodSwizzler) btg_swizzleSendEvent: 崩溃
先描述本人遇到的问题:1.在iPad上,iOS8的系统,点击某个cell,崩溃,崩溃到的位置是 [UIApplication(BTGMethodSwizzler) btg_swizzleSendEvent:] 2.在iOS 9的系统及以上,无崩溃,但是所有的cell都没有事件响应经调研资料显示: [UIApplication(BTGMethodSwizzler) btg_swizz...原创 2018-05-16 21:17:21 · 525 阅读 · 0 评论 -
iOS瀑布流
Demo地址一、实现方式1.UIScrollView 重点:视图重用2.UITableView 重点:滑动同步3.UICollectionView 重点:布局二、实现代码本文以UICollectionView作为讲解,要做成瀑布流的效果,其实很简单;基本分为三个步骤 - 1.创建一个基本的UICollectionView,但是cell的大小不一致 -原创 2017-11-12 00:18:29 · 396 阅读 · 0 评论 -
iOS拍摄视频,自定义拍摄界面,高清压缩,添加水印
TakeVideo概述iOS系统本身有一套UIImagePickerController用来拍照片和拍摄视频,但是现在各大应用都喜欢自定义拍摄视频的界面,你肯定也心动了。拿微信来讲,小视频是最长是9秒钟,占用1.5MB,那我们也想做这样的效果,肿么办?? 本篇文章,将为你揭秘拍摄视频那点事。 我写了一个Demo叫做TakeVideo,涵盖了这些功能,大家可以去 Github下载 - TakeVi原创 2017-08-29 13:40:29 · 5819 阅读 · 0 评论 -
iOS应用审核 - Phased Release for Automatic Updates (阶段性自动更新发布)
iOS应用审核 - Phased Release for Automatic Updates (阶段性发布自动更新)官方解释地址:https://itunespartner.apple.com/en/apps/faq/Managing%20Your%20Apps_Submission%20ProcessPhased Release for Automatic Updates 以下翻译成“ 阶段性自动原创 2017-06-14 19:51:36 · 2725 阅读 · 0 评论 -
iOS攻防 - (十)theos的介绍,安装和使用
iOS攻防 - (十)Theos的介绍,安装和使用1.介绍Theos就是越狱开发工具包2.安装2.1 下载地址 : https://github.com/iOS-Reverse-Engineering-Dev/theos 但是一般我们使用命令下载并安装 export THEOS=/opt/theos sudo git clone git://github.com/DHowett/theo原创 2017-05-30 18:55:14 · 5236 阅读 · 0 评论 -
iOS攻防 - (十三)基本工具的使用OpenSSH, iFile, MTerminal和syslogd
iOS攻防 - (十三)基本工具的使用OpenSSH, usbmuxd, iFile, MTerminal和syslogd1. OpenSSHOpenSSH是一个远程安全登录的工具在Cydia里搜索OpenSSH,并安装在MAC OS X终端输入命令,第一次登录SSH,密码是alpine ssh root@192.168.0.1 alpine由于这里有两种用户在iOS系统里,root和m原创 2017-06-03 21:56:13 · 3784 阅读 · 0 评论 -
iOS攻防 - (五)获取AppStore上的应用的所有头文件和源文件并脱壳
概述软件逆向工程指的是推断实现和设计程序的细节,或者分析系统的函数,架构和行为的过程。当我们对某一个软件的特性非常感兴趣的时候,但是又没有访问该源代码的权限时,我们可以尝试使用逆向工程来分析它。虽然可口可乐的配方是非常机密的,但是有一些公司仍然可以克隆它的味道。虽然我们没有访问该项目源代码的权限,但是我们可以通过逆向工程来深挖这些细节。PDF 文档iOS应用逆向工程(英文版)。需要VPN才能打开.原创 2017-04-16 17:24:22 · 5066 阅读 · 0 评论 -
iOS应用通过地址(URL)安装
目标:iOS应用通过URL地址来安装准备:1.bundle identifier2.应用图标3.下载地址 完整的下载地址是itms-services://?action=download-manifest&url=https://www.yourdomain.cn/download/2.1.0-10637/test.116d7.56d82df.20170122.原创 2017-01-22 11:31:40 · 2869 阅读 · 0 评论 -
APNs(Apple Push Notification server)服务器代码C#编写
PushNotification使用最简单的方式通过APNs发送通知, 本库使用C#写的服务器端代码,C/Objective-C客户端代码原地址 Github地址APNs 概述Apple推送通知服务,是一个稳健性和高效率性的远程通知,具有中心化的特性。APNs可以传送通知消息到iOS,WatchOS, tvOS 和macOS的设备。 在应用初始化启动时,会创建一个受信任的和加密的IP链接到APNs原创 2017-01-17 22:34:02 · 5447 阅读 · 3 评论 -
使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)
使UIScrollView的子控件在scrolling的过程中,子控件不滚动(固定在某个位置)受本篇问答的启发http://stackoverflow.com/questions/11272847/make-uiview-in-uiscrollview-stick-to-the-top-when-scrolled-up修改代码如下注意:使UIScrollView原创 2017-02-07 16:06:24 · 3941 阅读 · 1 评论 -
Your binary is not optimized for iPhone 5
Your binary is not optimized for iPhone 5 - New iPhone apps and app updates submitted must support the 4-inch display on iPhone 5 and must include a launch image referenced in the info.plist under原创 2016-02-23 11:10:03 · 625 阅读 · 0 评论 -
如何删除XCode里的证书
如何删除XCode里的证书?解决方案: 1.在Dock中找到Finder,右击Finder 2.前往文件夹 3.拷贝这个地址~/Library/MobileDevice/Provisioning Profiles,点击前往 4.在Finder中看到的文件删除你要删除的证书,即可原创 2016-02-24 16:12:59 · 1019 阅读 · 0 评论 -
Apple Pay 详细教程
Apple Pay运行环境:iPhone6以上设备,操作系统最低iOS9.0以上,部分信息设置需要iOS9.2以上。目前还不支持企业证书添加。基本过程:1. 检测设备是否支持Apple Pay2.创建支付请求对象3.创建地址,票据邮寄地址等基本信息4.创建卡片5.创建商品列表6.根据商品列表计算价格7.付款,监听回调函数里是否成功DEMO地址原创 2016-03-08 23:51:31 · 1443 阅读 · 0 评论 -
Objective-C动态创建类(ARC版)
我从网上搜到一些OC动态创建类,基本都是MRC版的,今天总结一下,做了一个ARC的以下这个地址是一个MRC的动态创建类http://blog.sina.com.cn/s/blog_5914638f0101helm.htmlOC发展到现在,基本上没有人使用MRC开发功能了,除非是维护老的项目ARC的创建方法如下#import #import int m原创 2016-03-18 15:18:04 · 915 阅读 · 0 评论 -
Objective-C的Method Swizzle、对象模型、消息机制、消息转发的详解
先来引入一个话题当项目有一个需求是,要对所有的UIViewController的viewWillApear:animte方法进行监听,而项目很大,.m的控制器文件很多,而且该项目已经开发好了,对这个方法监听不可能进入到控制器里一个一个的添加此时Objective-C有一个运行时的方法特别好的解决这种问题,当然该方法不是说只能解决上述这种情况比如,做统计,需要对系统的库的某个方法原创 2016-03-17 15:29:31 · 1165 阅读 · 0 评论