iOS开发
文章平均质量分 83
上天眷顾我
努力到无能为力,拼搏到感动自己!
展开
-
面试驱动技术 - Block看我就够了【干货】
面试驱动技术合集(初中级iOS开发),关注仓库,及时获取更新 Interview-seriesimageBlock 在 iOS 算比较常见常用且常考的了,现在面试中,要么没面试题,有面试题的,基本都会考到 block 的点。本文特别干!(但是初中级iOSer应该能有所收获~)先来个面试题热热身,题目: 手撕代码 - 用Block实现两个数的求和(这题如果会的,block基础知识可以跳过了,直接到 Block原理探究)简单介绍block入门级用法Block结构比较复杂,一般用 .转载 2020-07-30 11:27:41 · 494 阅读 · 0 评论 -
Swift项目,超美的动画和tableView,collectionView,轮播图的使用,网络请求的封装等
<一>项目介绍:这是一个Swift语言的项目,但是其中也有使用一些OC的三方库,比SDWebImage、WebViewJavascriptBridge等,同时实现了基本App的框架功能,有引导页,启动图还有底部四个tabBar及其顶部的navigationBar 此项目包含了app常用样式tableView顶部带有轮播图的场景,同时数据都来源于网络动态加载的。 项目还涉及到了WKWebView通过WebViewJavascriptBridge来与H5进行交互的场景,毕竟现在App多数为混转载 2020-07-30 11:26:37 · 555 阅读 · 0 评论 -
iOS super关键字帮我们做了什么?
本篇文章讲的是super的实际运作原理,如有同学对super与self的区分还有疑惑的,请参考ChenYilong大神的《招聘一个靠谱的iOS》面试题参考答案(上)。super究竟在干什么?官方提到的super关键字?打开苹果API文档,搜索objc_msgSendSuper(对该函数陌生的先去补补rumtime)。super官方解释里面明确提到了使用super关键字发送消息会被编译器转化为调用objc_msgSendSuper以及相关函数(由返回值决定)。再让我们看看该函数的定转载 2020-07-30 11:24:57 · 570 阅读 · 0 评论 -
RunLoop总结与面试
之前关于RunLoop只知道一点,最近花时间重新系统的学习了一下,以下是我的学习笔记及总结。有不足的部分,望大佬不吝赐教。1.RunLoop 概念计算机处理任务有进程和线程的概念,而在iOS中一个App只能开启一个进程,但是线程可以开启多个。一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。当我们需要一个常驻线程,可以让线程在需要做事的时候忙起来,不需要的话就让线程休眠,可以这样做:do { //获取消息 //处理消息} while (消息 != 退出..转载 2020-07-30 11:23:48 · 356 阅读 · 0 评论 -
反汇编OC代码看函数调用及内存管理
Qinz创建一个对象是我们再熟悉不过的了,那么它转换为汇编代码又是怎么执行的呢?接下来我们就通过最常见的创建对象入手,详细分析对象创建和销毁的汇编,从汇编中还原函数调用逻辑。1. 首先我们来看下面一行代码,这里就只是创建一个P对象:- (void)viewDidLoad { [super viewDidLoad]; Person* p = [[Person alloc]init];}1.1 上面是我们最熟悉的对象创建,我们知道,alloc和init都是发送消息...转载 2020-07-30 11:22:57 · 835 阅读 · 0 评论 -
iOS推送语音播报(类似支付宝收款提醒)
需求分析实现类似支付宝微信收款后的语音播报如:支付宝到账xx元。要求是APP在前台运行、锁屏、杀死进程后都会有语音播报。那想到的解决方案就是利用推送了。功能实现思路分析上面说了,要使用推送,也就是APNs,这里我使用了极光推送,接下来就是实现手机接收到通知之后播报语音了,关于这个功能的实现在iOS10以后苹果新增了“推送拓展”UNNotificationServiceExtension,我们可以在这里操作,在这里我用的是苹果官方的AVSpeechSynthesizer和AVSpeechUtter转载 2020-07-30 11:21:30 · 1549 阅读 · 0 评论 -
最全面的 iOS 断点调试
作为一名程序猿,编码能力是赖以生存的基础。编码是个人逻辑的提现,正所谓「智者千虑,必有一失」,几乎没有人能够保证自己的程序完全正确,因此在编程工作中,代码调试工具显得异常重要。Xcode 中集成了调试工具神器 lldb ,利用它能够轻松发现代码中隐藏的错误。本篇文章对其做一个全面的介绍。Xcode 中添加断点十分简单,单击左侧代码行,出现蓝色标签,就是添加了一个断点:1.png接下来,看一下断点的晋级操作:1 ctrl + 断点/右键断点,调出断点编辑菜单:2....转载 2020-07-30 11:19:39 · 508 阅读 · 0 评论 -
iOS开发-审核被拒原因总结[持续更新]
交流群更多iOS审核问题欢迎加QQ群 828079826GitHub整理的分类被拒方案,欢迎大家pull request.AppStoreReviewGuidelines即将实行的隐私政策要求即将实行的隐私政策要求2018年8月31日敬请留意:《App Store 审核指南》于 6 月进行了更新,要求所有的新 App 和 App 更新都需提供隐私政策,作为 App 审核流程的一部分。自2018年10月3日起,App Store Connect 将要求所有的新 App 和 Ap.转载 2020-07-30 11:18:18 · 9360 阅读 · 0 评论 -
iOS开发中的Web应用概述
为了更好的阅读体验,建议阅读原文插播广告 —— 几十行代码完成资讯类App多种形式内容页HybridPageKit :一个针对资讯类App高性能、易扩展、组件化的通用内容页实现框架。想和我一起全面了解新闻类App的开发,点我学习移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代。而一直以来Native和Web的争论从未停止,通过开发者孜孜不倦的努力,Web的效率和Native的体验也一直在寻求着平衡。本文聚焦iOS开发和Web开发的交叉点,希望能通过简要的介绍,帮助开发者一.转载 2020-07-30 11:16:32 · 1582 阅读 · 0 评论 -
NSURLSession全面学习笔记
最近一直在学习AFNetWorking这个框架,我们知道这个框架主要就是封装的的NSURLSession这个类及其相关的类,那么我们要想搞清楚AFNetworking这个框架,首先就要搞清楚NSURLSession这个类相关的类。首先学习一下在NSURLSession之前使用的一个类:NSURLConnection这个类。一.NSURLConnectionNSURLConnection...转载 2020-04-07 19:55:20 · 339 阅读 · 0 评论 -
简单监测iOS卡顿的demo
前言本文的demo代码也会更新到github上。做这个demo思路来源于微信team的:微信iOS卡顿监控系统。主要思路:通过监测Runloop的kCFRunLoopAfterWaiting,用一个子线程去检查,一次循环是否时间太长。其中主要涉及到了runloop的原理。关于整个原理:深入理解RunLoop讲解的比较仔细。以下就是runloop大概的运行方式: //...转载 2020-04-07 19:54:22 · 318 阅读 · 0 评论 -
使用SceneKit编写VR全景播放器
最近用SceneKit做了全景看房的功能,现总结下如何实现的。先看下最终的效果:gif1.gifVR图片全景播放器有以下功能:360度 手势滑动,缩放 陀螺仪 分屏(VR眼镜) 热点hotpot 头控/eyepick手势滑动,缩放,陀螺仪功能都是调节球面图片显示的位置;热点和头控功能本质是一样的,都是在原有模型上增加3维的视图。它们用途不一样,头控功能(全景图片一般...转载 2020-04-07 19:53:22 · 665 阅读 · 0 评论 -
iOS开发常用技术底层实现(精简概述)
(1)RunTime总结:oc动态性, 运行时将代码转化为runtime的C代码RunTime运行流程:生成对应objc_msgSend方法 isa指针查看当前类有没有这个方法, 之后寻找父类, 每个方法SEL(方法选择器)对应IMP(类似于一个编号,是函数指针,指向函数实现,找到内存里对应函数), 直到NSObeject, 如果找不到IMP, 会进入消息转发机制, resolv...转载 2020-04-07 19:51:43 · 528 阅读 · 0 评论 -
AppStore发布流程(从证书创建到app发布一站式)
简介iOS-APP发布流程细分一般包含八部分:有可用的苹果开发者账号(AppID)。 app相关证书信息配置(开发者发布证书、描述文件)。 开发工具(XCode)设置。 打包应用app。 itunes平台填写待提交app信息。 提交ipa文件到itunes平台。 提交审核。 等待审核结果。本文主要针对这八部分以图文形式进行说明。一、苹果开发者账号如果已经有可用账号了...转载 2020-04-07 19:49:47 · 1320 阅读 · 0 评论 -
iOS - 骨架屏自动生成方案
骨架屏是什么?找到这里的同志,或多或少都对骨架屏有所了解,请容许我先啰嗦一句。骨架屏(Skeleton Screen)是一种优化用户弱网体验的方案,可以有效缓解用户等待的焦躁情绪。TABAnimated是什么?TABAnimated是提供给iOS开发者自动生成骨架屏的一种解决方案。开发者可以将已经开发好的视图,通过TABAnimated配置一些全局/局部的参数,自动生成与其长相一致...转载 2020-04-07 19:48:29 · 807 阅读 · 0 评论 -
NSURLSession全面学习笔记
最近一直在学习AFNetWorking这个框架,我们知道这个框架主要就是封装的的NSURLSession这个类及其相关的类,那么我们要想搞清楚AFNetworking这个框架,首先就要搞清楚NSURLSession这个类相关的类。首先学习一下在NSURLSession之前使用的一个类:NSURLConnection这个类。一.NSURLConnectionNSURLConnection...转载 2019-11-22 10:40:24 · 310 阅读 · 0 评论 -
简单监测iOS卡顿的demo
前言本文的demo代码也会更新到github上。做这个demo思路来源于微信team的:微信iOS卡顿监控系统。主要思路:通过监测Runloop的kCFRunLoopAfterWaiting,用一个子线程去检查,一次循环是否时间太长。其中主要涉及到了runloop的原理。关于整个原理:深入理解RunLoop讲解的比较仔细。以下就是runloop大概的运行方式: /// 1...转载 2019-11-22 10:39:25 · 356 阅读 · 0 评论 -
使用SceneKit编写VR全景播放器
最近用SceneKit做了全景看房的功能,现总结下如何实现的。先看下最终的效果:gif1.gifVR图片全景播放器有以下功能:360度 手势滑动,缩放 陀螺仪 分屏(VR眼镜) 热点hotpot 头控/eyepick手势滑动,缩放,陀螺仪功能都是调节球面图片显示的位置;热点和头控功能本质是一样的,都是在原有模型上增加3维的视图。它们用途不一样,头控功能(全景图片一般...转载 2019-11-22 10:38:34 · 858 阅读 · 0 评论 -
iOS开发常用技术底层实现(精简概述)
(1)RunTime总结:oc动态性, 运行时将代码转化为runtime的C代码RunTime运行流程:生成对应objc_msgSend方法 isa指针查看当前类有没有这个方法, 之后寻找父类, 每个方法SEL(方法选择器)对应IMP(类似于一个编号,是函数指针,指向函数实现,找到内存里对应函数), 直到NSObeject, 如果找不到IMP, 会进入消息转发机制, resolv...转载 2019-11-22 10:34:23 · 755 阅读 · 0 评论 -
shell脚本实现iOS包重签名及代码注入
Qinz当我们要逆向第三方应用时,首先就是要将应用安装在我们的手机上,然后进行hook分析,找到对应的方法调用,进行代码注入,破解其正常流程,从而达到逆向目的。接下来将详细讲解分析该过程具体实现。一、shell脚本实现重签名1. 我们以最常见的应用微信为例,其他应用原理一样!首先我们去PP助手下载越狱版本的微信应用,如下图:01 1.1 越狱版本的应用是没有加密的,正...转载 2019-11-22 10:32:58 · 526 阅读 · 0 评论 -
AppStore发布流程
简介iOS-APP发布流程细分一般包含八部分:有可用的苹果开发者账号(AppID)。 app相关证书信息配置(开发者发布证书、描述文件)。 开发工具(XCode)设置。 打包应用app。 itunes平台填写待提交app信息。 提交ipa文件到itunes平台。 提交审核。 等待审核结果。本文主要针对这八部分以图文形式进行说明。一、苹果开发者账号如果已经有可用账号了...转载 2019-11-22 10:31:34 · 300 阅读 · 0 评论 -
iOS - 骨架屏自动生成方案
骨架屏是什么?找到这里的同志,或多或少都对骨架屏有所了解,请容许我先啰嗦一句。骨架屏(Skeleton Screen)是一种优化用户弱网体验的方案,可以有效缓解用户等待的焦躁情绪。TABAnimated是什么?TABAnimated是提供给iOS开发者自动生成骨架屏的一种解决方案。开发者可以将已经开发好的视图,通过TABAnimated配置一些全局/局部的参数,自动生成与其长相一致...转载 2019-11-22 10:29:42 · 546 阅读 · 0 评论 -
DevStore热门免费优秀资源推荐(123月合集)
啥也不说了,直接上干货吧!源码●上传头像兼容Android7.0#Android (上传作者:king_zhang)king_zhang:上传头像兼容Android7.0,圆形的剪切框。●RecycleView+任意头尾布局+拖拽换位+拖拽删除demo#Android(上传作者:wp2463496)wp2463496:介绍RecycleView+任意头尾布局+拖拽换位+拖...转载 2019-11-22 10:27:21 · 306 阅读 · 0 评论 -
iOS换肤功能的简单处理框架
换肤功能是在APP开发过程中遇到的比较多的场景,为了提供更好的用户体验,许多APP会为用户提供切换主题的功能。主题颜色管理涉及到的的步骤有颜色配置 使用颜色 UI元素动态变更的能力 动态修改配置 主题包管理 如何实施 优化效果如下:ezgif.com-optimizeDEMO代码:https://gitee.com/dhar/iosdemos/tree/mast...转载 2019-10-25 16:32:17 · 634 阅读 · 0 评论 -
iOS逆向(7)-LLDB,自制LLDB脚本,窜改微信红包金额
在上篇文章从fishhook看runtime,hook系统C函数中已经提到了利用LLDB的部分命令。在我们玩逆向的时候在大多数时候其实是拿不到源码的。所以了解一些LLDB来辅助我对别人APP的学(破)习(坏),是非常有必要的。自从开始玩逆向,总是会有一些大佬给我发一些转账信息(为什么不是发红包?红包金额有限制,拿不出手),金额还挺大。都是类似于这样的。88888.88.png...转载 2019-10-25 16:31:17 · 821 阅读 · 3 评论 -
iOS组件化方案与实践:Target-Action
目前项目组件化已经告一段落,我把总结的相关文章列罗出来创建cocoapod私有库详细步骤(基础组件组件化)iOS组件化方案与实践:Target-ActioniOS组件化解决图片显示问题xib文件如何组件化(cocoapod私有库)?适合小白的iOS项目组件化完整详细流程,每步都有demopod trunk push使用iOS项目组件化遇到的问题及解决(100%遇得到)Cocoapods 更新索引...转载 2019-10-25 16:28:43 · 809 阅读 · 0 评论 -
iOS马甲包审核以及常见审核问题
文章转载来源:iOS马甲包审核以及常见审核问题 @JIM_小白1、苹果近期审核动态分析2、2018年App Store算法重大调整首次曝光一、苹果近期审核动态分析1、机审越来越完善众所周知,应用在上架至App Store前,必须通过神秘的苹果审核团队的审核。能否在短时间内顺利通过审核,对App推广节奏和策略、以及迭代等的应该是非常大的!首先讲一下提审的流程目前应用提审的...转载 2019-10-25 16:27:45 · 1145 阅读 · 0 评论 -
踩坑Xcode 10之New Build System
Xcode10 Version 10.0 (10A255)发布,笔者第一时间升级。很显然使用的过程中出现了不少问题,相信大家都有所耳闻,最典型的就是libstdc++.6.0.9问题,网上已经有不少方法了,这里就不多说了。遇到的问题除了这个问题之外,笔者还遇到了build system的问题。在Xcode菜单栏选择File-- Workspace Setting就会出现如下的界面b...转载 2019-10-25 16:26:20 · 1287 阅读 · 0 评论 -
iOS安全之三攻三防
Qinz互联网世界每分钟都在上演黑客攻击,由此导致的财产损失不计其数。金融行业在安全方面的重视不断加深,而传统互联网行业在安全方面并没有足够重视,这样导致开发的APP在逆向开发人员面前等同于裸奔,甚至有些小厂前后台在账号密码处理上采取明文传送,本地存储,这等同于将账号密码直接暴露无疑。当然即使采用加密传送,逆向APP后依然可以获取到账号密码,让你在神不知鬼不觉的情况下将账号密码发送到了黑客...转载 2019-10-25 16:24:47 · 406 阅读 · 0 评论 -
Mac/iOS开发工程师 常用的软件 史上最全版
注意:长期更新,有“【任❤️何】”MAC软件需求(包括游戏、插件、图形设计、开发、系统、办公、网络等等),留言或者私信或者加我微信,我会发给你破解版!哥们不谈钱,伤肝!全部免费发送!常言: 工欲善其事,必先利其器。作为一名iOS开发工程师,必须是全能的。你不会点UI设计、不会点后台语言、不会点安卓开发...你都不好意思说自己是程序员。Mac上有很多好用的软件,有的能提升我们的开发效率,...转载 2019-10-25 16:23:16 · 3104 阅读 · 1 评论 -
面试驱动技术 - Category 相关考点
面试驱动技术合集(初中级iOS开发),关注仓库,及时获取更新 Interview-seriesimageI. CategoryCategory相关面试题Category实现原理? 实际开发中,你用Category做了哪些事? Category能否添加成员变量,如果可以,如何添加? load 、initialize方法的区别是什么,他们在category中的调用顺...转载 2019-10-25 16:21:45 · 228 阅读 · 0 评论 -
iOS cocoPod的基本使用
虽然网上关于CocoaPods安装教程多不胜数,但是我在安装的过程中还是出现了很多错误,所以大家可以照下来步骤装一下,我相信会很好用.前言在iOS项目中使用第三方类库可以说是非常常见的事,但是要正确地配置他们有时候是非常繁琐的事情,幸运的是CocoaPods是一个很好的解决方案。什么是CocoaPodsCocoaPods是OS X和iOS下的一个转载 2016-01-19 11:55:03 · 1916 阅读 · 1 评论 -
iOS极光推送
昨天花了一下午的时间研究了下极光推送,也前也是没做过,不知道从何下手!才开始的时候一看官方的SDK感觉好难,不过经过一系列的捣鼓之后,手机收到了推送信息,感觉其实并没有那么难!1.配置开发证书(得有开发者账号,个人,企业的都可以)开发环境测试在对 JPush iOS 开发环境进行测试前,请确保 3 个统一:App 是开发环境打原创 2016-01-21 09:24:20 · 6403 阅读 · 0 评论 -
iOS多线程的基本使用
一、NSThread:程序就是一段代码,是静态的概念进程是运行起来的程序,是动态的概念,进程需要占内存空间线程是进程的基本单位,一个进程至少有一个线程,iOS程序默认有一个主线程,用来显示和操作UI,主线程由系统自动创建,有系统管理。如果主线程不能满足我们的需求,可以手动创建线程,手动创建的线程需要我们自己管理。1.例:让一个原创 2016-01-26 10:42:20 · 522 阅读 · 0 评论 -
iOS百度推送的基本使用
一.iOS证书指导在 iOS App 中加入消息推送功能时,必须要在 Apple 的开发者中心网站上申请推送证书,每一个 App 需要申请两个证书,一个在开发测试环境下使用,另一个用于上线到 AppStore 后的生产环境。7.1 为你的 App 创建 App IDiOS 中每个 App 都需要对应一个 App ID,同一个公司可能会使用类似于 com.example.*原创 2016-01-27 15:56:42 · 2367 阅读 · 1 评论 -
Apple Pay接入详细教程
Apple Pay运行环境:iPhone6以上设备,操作系统最低iOS9.0以上,部分信息设置需要iOS9.2以上。目前还不支持企业证书添加。环境搭建好后可以在模拟器上面运行,xcode7.2.1+iPhone6SP9.2系统下,系统会绑定几种虚拟的银行卡,和几个联系人,方便调试,支付也不会发生真实的付款,真的很方便。[TCO]准备工作在接入Apple Pay之前,首先要申请Mer转载 2016-03-01 13:37:10 · 3455 阅读 · 0 评论 -
推荐:多线程的实现方式及经典示例
iOS中实现多线程的技术方案pthread 实现多线程操作代码实现:void * run(void *param){ for (NSInteger i = 0; i NSLog(@"---buttonclick---%zd---%@", i, [NSThread currentThread]); } return N转载 2016-01-30 09:46:20 · 542 阅读 · 0 评论 -
Runtime那些事儿(消息机制)
一、关于runtime之前在项目中有遇到过用runtime解决改变全局字体的问题,所以再一次感受到了runtime黑魔法的强大,趁现在有机会分享一下对runtime的一些理解。在对象调用方法是Objective-C中经常使用的功能,也就是消息的传递,而Objective-C是C的超集,所以和C不同的是,Objective-C使用的是动态绑定,也就是runtime。Objective-C的消转载 2016-03-02 13:56:42 · 399 阅读 · 0 评论 -
XMPP客户端登录开发详解
XMPP客户端登录开发详解OpenfireXMPP登录由上篇文章将了如何在MAC本地搭建一个Openfire服务器,今天我们就要着手使用 XMPPFramework来开发 基于XMPP 协议的即时通讯IOS 客户端系统。今天主要看登录功能开发,可能有人会质疑,我们都没有开发注册功能,怎么开发登录功能。注册账号我们有捷径,服务器都在本地,当然很好做了。另外就是通过MAC 自带的客转载 2016-02-02 13:45:27 · 637 阅读 · 0 评论 -
Interface Builder一些使用技巧
当年轻的开发者朋友们写了一大堆的代码时,他们会觉得很高兴,并且喜欢夸耀自己写的项目有成千上万行代码。随着经验越来越丰富,我们意识到代码是昂贵的,因为要花很多时间去维护、调试和寻找原因。这也是为什么我们应该使用工具来帮助我们避免写出样板代码。Interface Builder就是这些工具中的一个。下面说一些我喜欢的小提示和技巧。Storyboards还转载 2016-02-02 13:49:07 · 529 阅读 · 0 评论