- 博客(329)
- 资源 (22)
- 收藏
- 关注
原创 iOS Mach 异常、Unix 信号 和NSException 异常
前言Crash的主要原因是你的应用收到了未处理的信号。未处理信号可能来源于三个地方:kernel、其他进程、以及App本身。因此,crash异常也分为三种:Mach异常:是指最底层的内核级异常。用户态的开发者可以直接通过Mach API设置thread,task,host的异常端口,来捕获Mach异常。 Unix信号:又称BSD 信号,如果开发者没有捕获Mach异常,则会被host层的方法ux_exception()将异常转换为对应的UNIX信号,并通过方法threadsignal()将信
2020-07-07 16:20:14 1026
原创 汇编定位 objc_msgSend + 16 出错的问题
前言:本文涉及到汇编的部分基础,对汇编不懂的同学可以先看看iOS汇编入门-arm64基础这篇文章。先看下出错堆栈#0 ThreadSIGSEGVSEGV_ACCERR0 libobjc.A.dylib 0x000000018de86f30 objc_msgSend + 161 HLLCourseLive 0x0000000100318ee0 0x0000000100060000 + 28546242 AVFAudio 0x00000001a843d2a8
2020-06-18 15:07:03 1074
原创 iOS Crash栈的捕获和分析
在iOS应用开发和线上运行的过程中,我们总会被反馈到各种各样的崩溃。很多崩溃通过case的描述,就能很快的重现并得到修复,但是更多的崩溃也许这一辈子就发生这么一次,也许我们永远不知道它什么时候再会出现。同时,就算我们捕获到一个Crash栈,由于版本环境等种种原因,或者发生崩溃的代码我们就无法得到它详细的源码,我们往往会对着一片全是程序指令偏移量的Crash栈一脸蒙蔽。基于以上事实,我们需要从Crash栈的捕获和分析这两个角度进行深入的了解。本博客主要内容分为两部分:OC中的Crash异常的总结
2020-06-11 20:21:44 1283
原创 iOS 汇编入门 - arm64基础
前言iOS 中常见的架构有 armv7、armv7s、arm64、i386、x86_64 这些。其中, armv7 、armv7s 、arm 64 都是 ARM 处理器的指令集,i386 、x86_64 是 Mac 处理器的指令集这些指令集对应的机型有以下这些:arm64e: iphone XS | iphone XS Max | iPhoneXRarm...
2020-02-27 13:54:20 1770
原创 使用 Charles 解决部分App无法上网的问题(SSL Pinning)
设置好 Charles 代理之后发现打开目标 App debug 的时候弹窗“网络异常”提醒,测试 Safari 正常和其他 App 发现大部分都可以打开。Google之后发现这是因为该 App 使用了SSL Pinning 的原因。SSL Pinning 意味着 App 拷贝了一份服务器的公钥在本地,在进行网络连接的时候使用了本地的公钥进行加密了。由于 Charles 的密钥无法匹配导致拒接...
2019-10-22 11:24:04 8364 1
翻译 一次编译同时启动多个模拟器
原文 https://buildingvts.com/launch-multiple-ios-simulators-on-a-single-compile-985fd2ad5eb1 当你写完自动布局需要测试在不同模拟器上的运行效果时你是否很头疼,需要一个一个模拟器去启动运行。这时候如果可以一编译就同时启动多个模拟器那该是多么好啊。XCode 9 有一个新的特性——允许...
2018-04-04 15:48:58 4184
翻译 iOS高级调试&逆向技术-汇编寄存器调用
前言本文翻译自Assembly Register Calling Convention Tutorial 序言通过本教程,你会可以看到CPU使用的寄存器,并探索和修改传递给函数调用的参数。还将学习常见的苹果计算机架构以及如何在函数中使用寄存器。这就是所谓架构的调用约定。 了解汇编是如何工作的,以及特定架构调用约定是如何工作是一项极其重要的技能。它可以让你在没有源码的情况下,观察和修改传递给函数的参数
2017-07-13 18:20:50 8182 8
原创 分离静态库架构
先来看一段 MakeFile 脚本:OUT = libkugouplayer_VIPER3DRender.aOBJS = \ ../../Limiter.cpp \ ../../ViPER3DEffect.cpp \ ../../../AudioEffect.cppINCLUDE = -I../../../ \ -I.
2017-05-18 11:17:45 1084
原创 ARC 下 C++/OC 混编计数器的问题
ARC 模式下,object-C 编写的代码的内存管理都交给了自动引用计数器了,不用我们自己再去操心内存的管理,但使用 Core Foundation 框架或者是和 C++ 混编时,代码的内存还是需要我们自己去管理的,这时候就需要注意了!Core Foundation 主要是由不透明类型(opaque type),即 C 结构体组成,语言层面并不支持继承和多态,而 Core Foundation能够
2017-05-16 20:54:37 1695
原创 拷贝头文件shell
简单的拷贝头文件的话其实一个命令就可以搞定了find ./ -type f -not -name "*.h" -delete然后 copy 到你想要的地方,但这样做得不够完全,会出现一些空的目录,而且每次都要手动去敲命令,还是觉得挺麻烦的。所以还是写一个脚本执行好点,如上图,想要的 copy 的是 include 里面的头文件。脚本如下:#!/bin/bashheader_path=$SRCROO
2017-05-03 17:03:05 1726
原创 AVAudioSessionInterruptionNotification not called
问题描述:监听了系统的打断事件,在来电的时候有收到系统打断的 AVAudioSessionInterruptionTypeBegan 通知,却没有收到 AVAudioSessionInterruptionTypeEnd 通知。[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:n
2016-08-01 17:39:51 10129
原创 重定向 NSLog 输出到文件
问题:在 iOS 的开发过程中总是离不开 Debug,调试的时候都是依靠 XCode log 输出来追踪确定问题。但如果离开了 XCode 的时候仍然想看到日志的输出,比如在调试 App 与硬件的交互的时候,这时候应该怎么办?解决思路:方法一:第一反应是,写个类似于 NSLog 的输出函数,把想要的查看的信息输出到 view 上就好了。但很快就否决了,原因有2个:每
2016-07-03 21:22:43 2186
原创 iOS 编译包含 bitcode 的 opencore-amr-iOS 静态库
下载 opencore-amr-iOS 源码。修改 build_ios_xcode6.sh 脚本,以下加粗的部分为修改的内容。#!/bin/sh### Modified from http://blog.csdn.net/favormm/article/details/6772097set -xeDEVELOPER=`xcode-select -print-path`DEST=`pwd
2016-06-20 18:09:12 5080 1
原创 iOS 编译包含 bitcode 的 x264 静态库
1、首先下载 x264 的源码 git clone git://git.videolan.org/x264.git# cd x2642、编译脚本在这里。3、将编译脚本下载下来,打开 build-x264.sh ,在所有的 CFLAGS="... -fembed-bitcode" 后面加上 -fembed-bitcode ;然后将 build-x264.sh 放在和 x264
2016-06-20 15:59:26 4032
原创 iOS 编译包含 bitcode 的 fdk-aac 静态库(包含 arm64)
不多说了,这里是编译脚本。下载下来这个编译脚本后,修改一下 CFLAGS 选项,添加 -fembed-bitcode ,如下:细心的话,你设置一下 XCode 的 bitCode 选项的 enable 为 YES 的话,在 sourcetree 里查看批文件的修改也可看到其实修改到的也是这一行。有几点要注意的:1、它这个脚本使用的是 0.1.3 的 fdk-aac ,最新版的在这里
2016-06-17 17:18:37 3284
转载 谈谈 WebSocket
对于一些例如 IM、金融、股价、视频会议等这样一些应用来说,所需要的不过是高实时、低延时。针对于这一需求,现在有哪些比较好的可选方案呢?目前比较流行的是 socket 和 websocket。Socket首先,Socket 其实并不是一个协议。它工作在 OSI 模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是TCP 或 UDP )而存在的一个抽象层。Socke
2016-05-26 23:26:04 3815
转载 漫谈 iOS Crash 收集框架
为了能够第一时间发现程序问题,应用程序需要实现自己的崩溃日志收集服务,成熟的开源项目很多,如 KSCrash,plcrashreporter,CrashKit 等。追求方便省心,对于保密性要求不高的程序来说,也可以选择各种一条龙 Crash 统计产品,如 Crashlytics,Hockeyapp ,友盟,Bugly 等等。是否集成越多的 Crash 日志收集服务就
2016-05-26 17:17:40 1627
原创 调节音量时隐藏系统提示框(Hide device volume HUD when adjust the volume)
有这样一个需求,在特定页面调节系统音量的时候需要隐藏系统的音量 HUD 提示框。首先想到的是肯定是找控制系统音量的那个类,查找一下有没有对应的接口提供,过了一下 MPMusicPlayerController 并没有找到我需要的接口。又 Google 了一下,找到了设置音量的类 MPVolumeView ,根据 stackoverflow 上的答案,说是这样设置MPVolumeView *
2016-05-02 23:07:11 5909
转载 Swift编程的15个技巧
转载链接:http://geek.csdn.net/news/detail/58593自2014年9月1.0版发布后,Savvy的应用开发团队就开始在iOS项目中实验并使用Swift。不过由于Swift相对还很新,当时大多项目仍在使用Objective-C;自从2015年9月Swift 2.0版本发布以来,我们已经开始改用Swift来编译新的项目了。实际上在2016年1月,我们大多数的
2016-03-02 15:44:07 2831
转载 实现一个TODO宏
文章转自 sunnyxx 的博客:http://blog.sunnyxx.com/2015/03/01/todo-macro/实现一个TODO宏实现一个能产生warning的TODO宏,用于在代码里做备忘,效果:下面一步步来实现这个宏。Let’s do it手动让编译器报警(报错)可以用以下几个方法:123
2015-12-05 16:12:15 1224
转载 iOS 保持界面流畅的技巧
文章转自:http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消
2015-11-19 09:41:23 7428 1
转载 afnetworking_downloadFile_example
- (IBAction)downloadFile:(id)sender { NSURL *url = [NSURL URLWithString:@"http://www.hulkshare.com/dl/qw30o7x373a8/stan_courtois_&_felly_vs_cutting_crew_-_die_in_your_arms_(x-centrik_mix)_%5B_www
2015-10-28 18:36:57 911
原创 XCode 7.1 发送HTTP请求报错解决办法
昨天刚刚升级了XCode 7.1,然后在使用MPMoviePlayerController 播放在线流视频的时候报了HTTP的错误,如下:Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions
2015-10-27 12:22:27 2313
原创 Object-C 零碎知识点笔记
1、记录代码片段运行时间double begin = mach_absolute_time();[self refreshSongImageInNewLogic];double end = mach_absolute_time();NSLog(@"time cost = %f",MachTimeToMilliSecond(end - begin)); //毫秒double ...
2015-10-16 14:39:59 1279
转载 为什么说,你纯看代码而没有碰到这个场景你就算看懂了也没法理解?(关于并发)
为什么说,你纯看代码而没有碰到这个场景你就算看懂了也没法理解?我碰到了一个什么问题?来说一个场景,打开你的Instagram,如果手机有VPN,请连接上VPN.打开搜索页面,连续输入m,i,k,e.你会发现,小菊花转了4次.可以想象,客户端向服务端发起了4个请求,搜索的字段分别是"m","mi","mik","mike".那么问题来了.这四次搜索肯定是并发的,也就是
2015-09-23 22:59:26 922
原创 在Darwin层建立Notification监听锁屏/解屏事件
判断屏幕锁屏/解锁://// ViewController.m// TestScreenLockDemo//// Created by aaron.zheng on 2015-09-21.// Copyright © 2015 aaron.zheng. All rights reserved.//#import "ViewController.h"#include
2015-09-21 15:29:56 3360
原创 初识ios音频相关类
AVAsset 是一个播放音频和视频的抽象类。比较常用到的是它的子类 AVURLAsset ,通过 URL 实例化它。AVComposition 是用于时间编辑的。要播放一个AVAsset实例,需要先初始化一个 AVPlayerItem 实例,使用 AVPlayerItem 去设置一些初始化状态(例如:timeRange),然后将 player item 提供给 AVPlayer
2015-09-14 15:03:50 3053
转载 Streaming iPod Audio Tracks From Disk With Core Audio
There are two questions that often arise for iOS developers new to Apple’s audio frameworks: (1) How do I play tracks from the iPod Library using the low level Core Audio APIs (as opposed to using an
2015-09-12 14:20:29 1235
转载 Xcode Server Tutorials: 3. Prebuild & Postbuild Scripts
This article is Part 3 of a whole series called Xcode Server Tutorials. Check out Part 2 first if you haven't already. New posts are always tweeted by me (@czechboy0) on Twitter.Great to s
2015-09-09 23:30:36 626
转载 Xcode Server Tutorials: 2. Integrations
This article is Part 2 of a whole series called Xcode Server Tutorials. Check out Part 1 first if you haven't already. New posts are always tweeted by me (@czechboy0) on Twitter.Ok, time t
2015-09-09 23:29:17 807
转载 Xcode Server Tutorials: 1. Getting Started
This article is Part 1 of a whole series called Xcode Server Tutorials. New posts are always tweeted by me (@czechboy0) on Twitter.We all know how it works. Your iOS teammate works on a feat
2015-09-09 23:27:38 1905
转载 iOS音频播放 (八):NowPlayingCenter和RemoteControl
文章转自:http://msching.github.io/blog/2014/11/06/audio-in-ios-8/距离上一篇博文发布已经有一个月多的时间了,在这其间我一直忙于筹办婚礼以至于这篇博文一直拖到了现在。在之前一到六篇中我对iOS下的音频播放流程进行了阐述,在第七篇中介绍了如何播放iPod Lib中的歌曲,至此有关音频播放的话题就已经完结了,在这篇里我将
2015-09-06 18:49:08 2424
转载 iOS音频播放 (七):播放iPod Library中的歌曲
文章转自:http://msching.github.io/blog/2014/09/07/audio-in-ios-7/由于最近工作量非常饱和,所以这第七篇来的有点晚(创建时间是9月7日。。说出来都是泪)。现在市面上的音乐播放器都支持iPod Library歌曲(俗称iPod音乐或者本地音乐)的播放,用户对于iPod音乐播放的需求也一直十分强烈。这篇要讲的是如何来播放iP
2015-09-06 18:45:19 2561
转载 iOS音频播放 (六):简单的音频播放器实现
文章转自:http://msching.github.io/blog/2014/08/09/audio-in-ios-6/在前几篇中我分别讲到了AudioSession、AudioFileStream、AudioFile、AudioQueue,这些类的功能已经涵盖了第一篇中所提到的音频播放所需要的步骤:读取MP3文件 NSFileHandle解析采样率、码率、时长等信息,分
2015-09-06 18:43:39 5354 2
转载 iOS音频播放 (五):AudioQueue
文章转自:http://msching.github.io/blog/2014/08/02/audio-in-ios-5/在第三篇和第四篇中介绍了如何用AudioStreamFile和AudioFile解析音频数据格式、分离音频帧。下一步终于可以使用分离出来的音频帧进行播放了,本片中将来讲一讲如何使用AudioQueue播放音频数据。AudioQueue介绍Audi
2015-09-06 18:40:55 1862
转载 iOS音频播放 (四):AudioFile
文章转自:http://msching.github.io/blog/2014/07/19/audio-in-ios-4/接着第三篇的AudioStreamFile这一篇要来聊一下AudioFile。和AudioStreamFile一样AudioFile是AudioToolBoxframework中的一员,它也能够完成第一篇所述的第2步,读取音频格式信息和进行帧分离,但事实上它的功
2015-09-06 18:38:25 1180
转载 iOS音频播放 (三):AudioFileStream
文章转自:http://msching.github.io/blog/2014/07/09/audio-in-ios-3/本来说好是要在第三篇中讲AudioFileStream和AudioQueue,但写着写着发现光AudioFileStream就好多内容,最后还是决定分篇介绍,这篇先来说一下AudioFileStream,下一篇计划说一下和AudioFileStream类似的Au
2015-09-06 18:35:17 1669
转载 iOS音频播放 (二):AudioSession
文章转自:http://msching.github.io/blog/2014/07/08/audio-in-ios-2/本篇为《iOS音频播放》系列的第二篇。在实施前一篇中所述的7个步骤之前还必须面对一个麻烦的问题,AudioSession。本篇主要介绍关于AudioSession使用、期间需要注意的地方以及可能面临的坑。AudioSession简介
2015-09-06 18:32:05 1020
转载 iOS音频播放 (一):概述
文章转自:http://msching.github.io/blog/2014/07/07/audio-in-ios/从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改我也因此对于iOS下的音频播放实现有了一定的研究。写这个系列的博客目的一方面希望能够抛砖引玉,另一方面也是希望能帮助国内其他的iOS开发者和爱好者少走弯路(我自己就遇到了不少的坑=。=)。
2015-09-06 18:27:06 1219
转载 iOS应用架构谈 网络层设计方案
前言网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大。另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也被广泛使用。其它的ASIHttpRequest,MKNetworkKit啥的其实也都还不错,但前者已经弃坑,后者也在弃坑的边缘。在实际的App开发中,Afnetworking已经成为了事实上各大App的标准配置。网络层在
2015-08-25 22:05:37 1288 1
fdk-aac-0.1.3(包含bitcode)
2016-06-17
CKCalendarView
2014-06-09
优化UITableViewCell滚动性能demo
2014-05-10
TPKeyboardAvoidingScrollView(view自动上滚,避免遮住输入框)
2013-09-23
Object-C内存管理2-对象之间的内存管理
2013-08-26
Windows异步套接字网络编程
2013-04-30
Prolific usb-to-serial comm port 驱动 for win7win8
2013-04-27
Visual C++MFC编程实例
2013-03-06
软件工程项目编写模板与示例
2013-01-06
网络数据库课程设计
2012-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人