Objective-C
文章平均质量分 71
M.François
Learning code by doing more projects as many as you can.
展开
-
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 评论 -
2020年12月 C/ObjC/Swift混合编写开发的原理/使用/注意事项
1.Swift 5.32.Xcode 12.00x00 为什么要用Swift?1.Swift是趋势,Apple推荐,关键是5.0版本的ABI语法已经成熟固定了2.支持泛型、Optional、guard、differ、类型自动推导3.相同的功能,Swift编写的代码量比ObjC要少一半,运行效率比ObjC高2.6倍4.开源、跨平台,等等0x01 开发篇问1:在ObjC代码里如何调用Swift?在.h/m文件里导入头文件,例如:ProductModuleName叫做Apple,那么头文原创 2020-10-19 11:07:52 · 570 阅读 · 0 评论 -
pod install和pod update的区别(官方解释,通俗易懂)
这是官方文档 英语好的可以自己看,我这里给你总结下pod install就是说,当你在项目中的Podfile配置文件中添加、删除、或者更新版本号时使用,也就是用来安装新Pod,删除pod,或者根据你设置的pod版本号来安装安装完后,会自动生成Podfile.lock文件,该文件记录着Podfile配置的所有Pod的版本信息,依赖库信息,和pod库的checksum(校验码)所以当你下次运行pod install时,已经安装过的pod就不会再次去下载安装,也不会更新已有的pod库。pod updat原创 2020-08-11 12:44:05 · 4679 阅读 · 0 评论 -
iOS启动优化/耗电优化
一、启动优化1.pre-main阶段我们可以通过苹果提供了XCode内建的测量方法,1.点击项目名称2.Edit scheme...3.左侧Run4.中间顶部菜单Auguments5.在Environment Variables中添加一个环境变量DYLD_PRINT_STATISTICS,并设为 1再次运行项目,会得到以下输出主要分为3个加载阶段1.加载应用的可执行文件(app自身的所有.o文件集合)2.加载动态链接器dyld(dynamic loader一个专门用来加载动态链原创 2020-08-10 13:23:21 · 626 阅读 · 1 评论 -
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 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卡顿检测方案
方案一:基于RunLoop主线程绝大部分计算或者绘制任务都是以Runloop为单位发生。单次Runloop如果时长超过16ms,就会导致UI体验的卡顿。那如何检测单次Runloop的耗时呢?Runloop的生命周期及运行机制虽然不透明,但苹果提供了一些API去检测部分行为。我们可以通过如下代码监听Runloop每次进入的事件:- (void)setupRunloopObserver{ static dispatch_once_t onceToken; dispatch_once(&a原创 2020-08-06 16:03:09 · 1301 阅读 · 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 评论 -
iOS的App的崩溃收集和类型解释 ObjC/C/Swift语言都可以拦截
在Unix系统中标准的6种信号:SIGABRT: 表示程序异常终止,英语单词即Signal AbortSIGFPE: 表示浮点数异常错误,英语单词即Signal Floating Point ExceptionSIGILL: 表示无效指令/操作,英语单词即Signal IllegalSIGINT: 表示交互式注意请求发送到了程序引起了中断,英语单词Signal InterruptSIGSEGV: 表示无效的内存访问,英语单词是Segmentation ViolationSIGTERM: 表示终原创 2020-07-08 16:02:11 · 1370 阅读 · 0 评论 -
iOS 操作触感震动 tab点击震动 按钮点击震动
其实很简单,主要是系统提供的几种震动方式主要在这个AudioTool.framework里#import <AudioToolbox/AudioToolbox.h>一般震动AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);普通短震(类似3D Touch的 Peek 反馈 )AudioServicesPlaySyst...原创 2020-04-25 11:35:01 · 4456 阅读 · 0 评论 -
iOS实现左侧滑动菜单
先来一个Demo实现地址:https://github.com/VictorZhang2014/LeftMenuDemo类似滴滴app再来个动画演示下左滑菜单主要实现功能的类文件是BDLeftMenuView.hBDLeftMenuView.m使用方法如果是Objective-C,先导入头文件#import "BDMainNavigationBar.h"如果是Swift和O...原创 2020-04-19 18:52:11 · 2314 阅读 · 0 评论 -
秒懂iOS文件分享
iOS的文件分享可分为两种:1 在你的应用对某个文档如PDF提供可以选择第三方应用的列表来打开该文件功能2 让自己应用有能力出现在别人应用的文件打开选择列表里现在分开介绍这两种功能对于你的应用来说需要如何设置:第一种只需要调用系统的UIDocumentInteractionController就OK了:-(void)openDocumentIn {NSS转载 2017-04-22 18:39:05 · 6168 阅读 · 0 评论 -
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应用的代码打包前混淆,不影响源代码
iOS攻防 - (三)iOS应用的代码打包前混淆,不影响源代码出于iOS应用的安全考虑,如:银行类型APP, 金融相关APP, 登录功能,支付功能等;某些时候,我们需要对iOS应用的重要函数或名称进行混淆,因为即使是App Store下载的应用亦可以使用class-dump进行导出应用的所有头文件,这就太不安全了。为了加大程序结构的逆向或破解难度,此文讲解如何对iOS应用的源代码进原创 2017-05-05 16:59:07 · 14958 阅读 · 6 评论 -
iOS攻防 - (八)使用Introspy追踪和分析iOS应用
使用Introspy追踪和分析iOS应用转载自:http://wiki.jikexueyuan.com/project/ios-security-defense/introspy.html如果你已阅读了《 iOS 安全攻防》系列专栏之前的文章,一定已经对静态以及运行时分析 App 有了一定的了解。我们可以借助的分析工具很多,工具和工具之间一般没有什么优劣比较性,完全看个人习惯什么擅长什么。多个工具多原创 2017-05-26 15:41:20 · 1443 阅读 · 0 评论 -
UIMenuController设置setMenuVisible:YES后还是不显示
问题:UIMenuController设置setMenuVisible:YES后还是不显示解决方案:在[menu setMenuVisible:YES animated:YES];后面加上 if (![menu isMenuVisible]) { UIWindow *window = [[UIApplication sharedApplication]原创 2017-06-08 19:38:06 · 2974 阅读 · 0 评论 -
UIImageView范围内放大,缩小,移动 -- 官方文档代码
UIImageView范围内放大,缩小,移动 -- 官方文档代码我们都知道,使用UIImagePickerController选择完图片时,设置属性allowsEditing=YES;,那么选中的图片就会跳转到一个新的控制器,在这个控制器里可以在指定的范围内放大、缩小和移动,但是这个界面是CocoaTouch决定的如果我们自己单独新建一个控制器要写这样的代码,直接用UIPi原创 2017-05-04 10:54:23 · 1195 阅读 · 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 评论 -
UIViewController present出来一个透明的UIViewController
UIViewController present出来一个透明的UIViewController 其实很简单,代码如下 MyViewController *checkOut = [[MyViewControlleralloc] init]; checkOut.providesPresentationContextTransitio原创 2017-02-15 18:46:15 · 1302 阅读 · 0 评论 -
Apple Developer Program注册设备满了100台,如何移除?
讨论主题:Apple Developer Program注册设备满了100台,如何移除?唯一的解决方案:1.使用Apple开发者账号的代理人(Agent) 拨打Apple开发者电话, 400-670-1855 2.告诉客服,你想移除哪个开发者账号的注册设备,一般他们会让你等待几分钟,核实你的相关信息,如果一切信息没有问题的话,客服会告诉你,半小时内会发一封邮件给你,并且在 ht原创 2017-01-24 12:10:33 · 8302 阅读 · 0 评论 -
iOS攻防 - (六)iOS应用使用Clutch脱壳
iOS应用使用Clutch脱壳下载地址:https://github.com/KJCracks/Clutch/releases1.将下载下来的Clutch改名为Clutch, 然后通过iTools或者iFunBox把iClutch拖拽到越狱的iPhone,目录为:/usr/bin2.使用ssh登录到越狱的iPhone,cd到/usr/bin目录下,给Clutch原创 2017-05-24 19:18:55 · 5683 阅读 · 0 评论 -
iOS攻防 - (七)iOS app - 使用Cycript修改微信app
iOS app - 使用Cycript修改微信app1.安装Cycript官网地址:http://www.cycript.org/debs/?C=M;O=D找到如下两个安装包,并下载到MacOS上cycript_0.9.501_iphoneos-arm.deblibffi_1-3.0.10-5_iphoneos-arm.deb然后通过iTools或者iFun原创 2017-05-24 19:59:18 · 4970 阅读 · 2 评论 -
Objective-C 自定义构造方法
自定义构造方法注意:父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性 #import @interface Person : NSObject@property NSString* name;@property int age;//声明自定义构造方法-(instancetype)initWithName:(NSString*)_name and:(原创 2015-08-04 23:20:18 · 657 阅读 · 0 评论 -
Autolayout代码编写基本使用
第一种代码如下:UIView *redView = [[UIView alloc] init];redView.translatesAutoresizingMaskIntoConstraints = NO;redView.backgroundColor = UIColor.redColor;[self.view addSubview:redView];//设置高度[redView...原创 2019-09-05 17:58:46 · 276 阅读 · 0 评论 -
iOS基础面试题2019
基础概念MVC (Model View Controller)设计模式,视图,控制器,模型负责提供数据,视图负责显示,控制器的作用就是确保模型和视图的同步,一旦M改变,V就应该立即更新。Controll要如何显示View,取决于Modelhttps://baike.baidu.com/item/MVC%E6%A1%86%E6%9E%B6/9241230?fr=aladdin&from...原创 2019-08-29 18:08:56 · 820 阅读 · 1 评论 -
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 Charles 抓包指南 - 从入门到精通
iOS Charles 抓包指南以下那知乎的请求举例子步骤Step 1: 安装 Charles 从 https://www.charlesproxy.com/download/ 下载安装 Charles 最新版。Step 2: 注册 License Charles -&gt; Help -&gt; Register Charles Registered name: 你购...原创 2018-01-19 15:16:04 · 11448 阅读 · 0 评论 -
Objective和Swift混编 官方解释
Objective和Swift混编 官方解释Apple Official Documentation Explanation重点1.在Objective-C代码里使用Swift,则在Objective-C代码里使用#import "ProductModuleName-Swift.h" 即可2.在Swift代码里使用Objective-C,则在Objective-C的桥接文件原创 2017-12-08 18:13:36 · 702 阅读 · 0 评论 -
Protocol Buffers的入门加实践
目录1.介绍2.下载与安装3.实例说明(Python代码)4.实例说明(Objective-C代码)5.文件.proto的解释1.介绍Protocol Buffer,简单来说,就是一种数据交换格式,就像JSON和XML作用一样,只不过Protocol Buffer是Google开源的一套二进制流网络传输协议,它独立于语言,独立于平台;而且它的性能、速度等非常优越于JSON和XML。goo原创 2017-11-04 20:02:27 · 309 阅读 · 0 评论 -
iOS瀑布流
Demo地址一、实现方式1.UIScrollView 重点:视图重用2.UITableView 重点:滑动同步3.UICollectionView 重点:布局二、实现代码本文以UICollectionView作为讲解,要做成瀑布流的效果,其实很简单;基本分为三个步骤 - 1.创建一个基本的UICollectionView,但是cell的大小不一致 -原创 2017-11-12 00:18:29 · 396 阅读 · 0 评论 -
iOS攻防 - (五)获取AppStore上的应用的所有头文件和源文件并脱壳
概述软件逆向工程指的是推断实现和设计程序的细节,或者分析系统的函数,架构和行为的过程。当我们对某一个软件的特性非常感兴趣的时候,但是又没有访问该源代码的权限时,我们可以尝试使用逆向工程来分析它。虽然可口可乐的配方是非常机密的,但是有一些公司仍然可以克隆它的味道。虽然我们没有访问该项目源代码的权限,但是我们可以通过逆向工程来深挖这些细节。PDF 文档iOS应用逆向工程(英文版)。需要VPN才能打开.原创 2017-04-16 17:24:22 · 5066 阅读 · 0 评论 -
微信移动端数据库组件WCDB系列(一)-iOS基础篇
前言==================================WCDB(WeChat DataBase)是微信官方的移动端数据库组件,致力于提供一个高效、易用、完整的移动端存储方案。 它包含三个模块: WCDB-iOS/Mac WCDB-Android 数据库损坏修复工具WCDBRepair 目前正在筹备开源中。背景================================转载 2017-06-19 10:25:04 · 2494 阅读 · 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应用通过地址(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 评论 -
HTTPS在SSL/TLS上的使用和配置(IIS8和iOS客户端)
HTTPS在SSL/TLS上的使用和配置(IIS8和iOS客户端)CA证书1.域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;一般是免费的2.企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;收费的3.增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构原创 2017-02-09 17:35:24 · 4647 阅读 · 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 评论 -
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.iOS 9.0由于强制使用https 所以之前使用原创 2015-10-07 20:26:57 · 1284 阅读 · 0 评论