
iOS平台知识
文章平均质量分 71
hherima
移动互联网,大有可为!APP开发经历:飞信、和4G、搜狐视频、56视频等项目。
展开
-
当自己视频APP,遇到别人音频APP后台播放音频时候
当别家音乐APP播放音乐,打开自家视频APP(虽然没有播放视频),但音乐app的音频却暂停了(如果是钉钉语音会议这种情况,会自动退出语音会议)。 查了资料:这是音频打断处理问题,举个例子: 第一种情况:比如闹铃打断的情况。先是AVAudioSessionInterruptionTypeBegan,闹铃结束调AVAudioSessionInterru...原创 2020-04-13 17:56:48 · 1626 阅读 · 0 评论 -
Xcode调试技巧——观察变量值改变 watchpoint set variable
说一个很有用的Xcode调试技巧:观测某一个变量修改添加了一个观测点self->_test->_var 注意写法,一定要用->而且,要用下划线取得变量。不能用" . "。再配合条件断点,在某些情况下,调试起来非常有效:下面demo显示了:“在_var == 2的时候才断点”的用法原创 2015-06-08 14:43:58 · 12291 阅读 · 0 评论 -
iOS: 如何正确的绘制1像素的线
一、Point Vs PixeliOS中当我们使用Quartz,UIKit,CoreAnimation等框架时,所有的坐标系统采用Point来衡量。系统在实际渲染到设置时会帮助我们处理Point到Pixel的转换。这样做的好处隔离变化,即我们在布局的事后不需要关注当前设备是否为Retina,直接按照一套坐标系统来布局即可。实际使用中我们需要牢记下面这一点:One point doe转载 2015-06-29 10:30:00 · 3857 阅读 · 1 评论 -
使用(获取)Images.xcassets中的图片名,不能直接[UIimage ImageWithName:],应该这样
最新做一个项目,需要iOS默认启动图过后,再次使用启动图垫底,然后配合广告图进行一个动画。故最直接的办法就是使用Images.xcassets中的图片。然而,直接使用Images.xcassets中的图片名,再用[UIImage ImageWithName:]取不到图片??? 这是因为Images.xcassets会对启动图,进行二次命名。所以,需要获取Images.xassets的重命名后的名字(具体函数参考下面代码),再用[UIImage ImageWithName:]就ok原创 2015-11-05 10:52:43 · 3899 阅读 · 1 评论 -
提交App Store ITMS-90474 iPad Multitasking support requires these orientations。ITMS-90032,ITMS-90475
本人项目,iOS 9支持画中画,用xcode7提交Appstore 遇到下列问题:ITMS-90032 "Invalid Image Path -No image found at the path referenced under key 'CFBundleIcons':'Icon-76.png'"ITMS-90474 iPad Multitasking support requires原创 2015-09-30 11:39:41 · 4031 阅读 · 2 评论 -
直接把View Controller的view addSubview到另一个View,则不会调用viewDidAppear viewWillAppear
如果是直接把ViewController的view 通过addSubview添加到另一个View,则不会调用viewDidAppear,你需要手动发送viewDidAppear给这个View Controller。转载 2015-10-30 17:25:37 · 4206 阅读 · 0 评论 -
iOS关联,objc_getAssociatedObject, objc_setAssociatedObject
关联关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。 关联是基于关键字的,因此,我们转载 2015-03-01 21:18:53 · 4362 阅读 · 0 评论 -
iOS NSNotificationCenter 使用姿势详解
就是在页面出现的时候注册通知,页面消失时移除通知。你这边可要注意了,一定要成双成对出现,如果你只在viewWillAppear 中 addObserver没有在viewWillDisappear 中 removeObserver那么当消息发生的时候,你的方法会被调用多次,这点必须牢记在心。转载 2015-12-24 16:47:21 · 1786 阅读 · 0 评论 -
iOS 后台运行一段时间(不是地图,音乐类型APP)
iOS 后台运行一段时间(不是地图,音乐类型)。iOS 通常是不能在后台运行的,尤其是用户点击锁屏键,APP进入后台,网络立马断开等。如何解决这个问题呢?在APP进入后台,APP怎么争取一些时间来“善后”。代码如下:注:需要定义一个属性 UIBackgroundTaskIdentifier _bgTask;该代码可以自定义后台多长时间自动结束任务。原创 2016-03-02 16:24:38 · 2875 阅读 · 0 评论 -
iOS 容易引起“循环引用”的几种场景
目前总结了一下,在iOS平台容易引起循环引用的几个场景:一、parent-child模式二、block(编译器会提示警告)三、NSTimer原创 2014-09-10 16:18:07 · 15104 阅读 · 0 评论 -
iOS 适配固定边距内容拉伸
自从除了iPhone分辨率不再是320x480了。需要开发者适配屏幕,交互设计师通常是要求两边边距不变,内容拉伸。解决办法就是:以iPhone的分辨率为参考,其他屏幕相对拉伸。原创 2016-02-23 17:32:40 · 2094 阅读 · 0 评论 -
如何使用iOS 8 指纹识别,代码、实例
跟想象的一样,iOS 8中的指纹识别使用起来还是很方便的,只需要一个接口就能搞定,屏幕上弹出一个模态的框,跟app store上的一样。直接上代码吧,下面代码拷贝自Apple的官方文档。需要添加LocalAuthentication.framework库,注意只有真机才有这个库,模拟器没有#import "LocalAuthentication/LAContext.h" LAC原创 2014-06-18 18:38:09 · 3461 阅读 · 1 评论 -
iOS View的Frame和bounds之区别,setbounds使用(深入探究)
bounds的有以下两个特点:1. 它可以修改自己坐标系的原点位置,进而影想到“子view”的显示位置。这个作用更像是移动原点的意思。2. bounds,它可以改变的frame。如果bounds比frame大。那么frame也会跟着变大。这个作用更像边界和大小的意思。可以推测一下,setBound可以用于view的滑动,手势动作。原创 2014-09-24 14:34:41 · 12824 阅读 · 4 评论 -
iphone连接mac 的ipv6环境,搭建过程。
需要一个手机A用于共享(只能usb)网络给mac,然后mac设置一下,共享ipv6网络给手机B,我们可以在手机B上调试APP。具体步骤如下:1. 手机A关闭wifi,打开个人热点,此时会弹出来对话框选择用usb还是wif。此处需选择“仅USB”。注意:手机A必须有卡,因为要用它的流量。2. 电脑上代网络设置,看看一下iphone usb是不是已经连接上。此时可以关闭mac的wifi,这样iphon原创 2018-01-29 11:21:30 · 4041 阅读 · 1 评论 -
iOS 启动就crash,难复现。最后确定是MobFoundation问题
最近iOS版本客户端崩溃率在1.5%左右,排名最高的是这个栈。当然,fabric已经说明,是内存错乱造成的,崩溃栈已经不准确了。没有复现导致开发很难查这个crash(根据栈提示,好像是block的问题,其实不然)#0. Crashed: com.apple.main-thread0 libobjc.A.dylib 0x1843c57f4 objc_o...原创 2018-05-08 16:50:03 · 3071 阅读 · 10 评论 -
UITableView上拉、下拉原理
tableView上拉、下拉原理。 TableView的上拉,下拉特效已经满大街都是了,也有很多第三方的代码。 这两天研究了一下其原理,先分享一下。这里以tableView的上拉为例,由于上拉操作的样式也很多,这里只介绍一种:在上拉tableView的时候,在tableView的bottom下面,添加一个view,该view可以自定义。我称这个view为pullView,pullView是动态的,如下图(该图仅展示了loading状态,另外在loading的位置,还有“上拉显示更多”、“松手原创 2015-04-08 09:31:41 · 2934 阅读 · 0 评论 -
iPhone 6 图像渲染揭秘
几天前,Apple发布了iPhone 6 Plus. 新的iPhone大幅改变了图像在屏幕上渲染的方式。我们做了一个图表进行详细分析。转载 2014-09-21 20:34:51 · 1297 阅读 · 0 评论 -
iOS开发工具——统计Crash的工具Crashlytics
原文地址:http://tech.ddvip.com/2013-07/1375034417199825.html简介 Crashlytic 成立于2011年,是专门为移动应用开者发提供的保存和分析应用崩溃信息的工具。Crashlytics的使用者包括:支付工具Paypal, 点评应用Yelp, 照片分享应用Path, 团购应用GroupOn等移动应用。 2013年1月,转载 2015-04-01 14:15:26 · 1311 阅读 · 0 评论 -
UITableView分组冻结的研究与实现浅析
当我们使用iphone手机通讯录,手机qq的时候。有一个细节大家可能已经忽略,即“分组”控件在向屏幕上方滑动时,超过屏幕的高度,就冻结到屏幕最上端。方便用户确定当前浏览的是哪个分组。当下面的分组上来时候,又会当前冻结的窗口顶上去,它自己又实现冻结!原创 2014-08-23 22:25:14 · 1942 阅读 · 0 评论 -
iOS 时间格式化选项。
这些都是实用性的操作,不敢妄为原创,只能转载了。在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]转载 2013-04-03 11:31:41 · 1862 阅读 · 0 评论 -
iOS 获取手机的型号,系统版本,软件名称,软件版本
需要头文件#import //手机序列号NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];NSLog(@"手机序列号: %@",identifierNumber);//手机别名: 用户定义的名称NSString* userPhoneName = [[UIDevice currentD转载 2014-03-24 16:57:38 · 1814 阅读 · 0 评论 -
iOS 使用UIView 显示gif图片 + ImageMagick 的mac上安装
思想:借助UIView的动画。下面第一步,第二步是将gif拆分成一帧一帧的方法(ImageMagick),你有别的工具可以跳过。第一,下载 ImageMagick 开源工程。网址 http://image_magick.veidrodis.com/image_magick/ 请选择 ” 10/08/2013 14:29:02 13269k ImageMagi原创 2013-08-11 17:48:02 · 2244 阅读 · 0 评论 -
iOS 隐藏键盘,输入法,防止遮挡输入框
在百度里输入“ios 隐藏键盘”,很快搜出很多文章。比如:“点击return隐藏”,“点击输入框其他地方隐藏”,等等还有的大篇大论的。其实隐藏输入法也简单,我们应该抓住其本质:即调用resignFirstResponder函数实现隐藏(下面想些介绍)resignFirstResponder当然,你可以在下面任何一个地方调用,即可隐藏输入法键盘。-(void)touchesB原创 2013-03-12 12:16:47 · 4453 阅读 · 0 评论 -
对比iOS网络组件:AFNetworking 和 ASIHTTPRequest
在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题。一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性。这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等。那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?转载 2014-08-02 11:00:00 · 1527 阅读 · 0 评论 -
Core Data 和 sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试。
demo 和源码再此下载 :http://download.youkuaiyun.com/detail/hherima/5603797使用ios 7和xcode5编译。原创 2013-06-18 14:33:18 · 12277 阅读 · 0 评论 -
iOS应用的crash日志的分析基础
如何获得crash日志如何解析crash日志如何分析crash日志 1. iOS策略相关 2. 常见错误标识 3. 代码bug转载 2014-05-23 16:51:29 · 1181 阅读 · 0 评论 -
iOS:KVO的概述与使用
一、概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。二、使用方法系统框架已经支持KVO,所以程序员在使用的时候非常简单。1. 注册,指定被观察者的属性,2. 实现回调方法3. 移除观察三、实例:假设一个场景,股转载 2014-03-19 09:58:52 · 1227 阅读 · 0 评论 -
简单使用NSURLConnection、NSURLRequest和NSURL
下面是代码,注释也写得比较清楚://// HttpDemo.h// MyAddressBook//// Created by hherima on 14-6-23.// Copyright (c) 2014年 chinasofti. All rights reserved.//#import #import @interface HttpDemo : NSObjec原创 2014-06-23 13:30:54 · 2672 阅读 · 0 评论 -
iOS多线程中performSelector: 和dispatch_time的不同
我们知道:只有主线程会在创建的时候默认自动运行一个runloop,并且有timer,普通的子线程是没有这些的。这样就带来一个问题了,有些时候我们并不确定我们的模块是不是会异步调用到,而我们在写这样的延时调用的时候一般都不会去检查运行时的环境,这样在子线程中被调用的时候,我们的代码中的延时调用的代码就会一直等待timer的调度,但是实际上在子线程中又没有这样的timer,这样我们的代码就永远不会被调到。原创 2014-08-28 17:50:45 · 10471 阅读 · 3 评论 -
iOS 修改通讯录联系人地址(address)崩溃原因分析
目前项目中需要对iOS系统通讯录进行读取,修改操作。在进行对地址修改的时候,出现了一个奇怪现象:● 如果contact没有address字段(或者一个全新的contact),对它的address进行修改是可以成功的,● 如果这个人有过address字段,此时对它就行修改就崩溃。控制台打出:*** -[CFString release]: message sent to deallocated instance 0x81d26f0这应该是一个僵尸对象,重复释放某一个对象。首先我对修改通讯录的代码进行原创 2014-11-29 13:09:13 · 2864 阅读 · 0 评论 -
iOS 通讯录编程【总结】
1. 监听通讯录变更监听规则:当App活跃(前台+后台保活期间)的时候,当通讯录修改的时候,会收到通知当App不活跃的时候(挂起的时候),App收不到通知;而是,当App到前台的时候收到延迟的通知。原创 2014-08-22 15:30:00 · 5366 阅读 · 2 评论 -
iOS 程序进入后台,包括用户上拉快捷菜单导致程序失去活跃的研究
下面是常见的几种程序进入后台,或者失去活跃的操作。1. 点击home键,程序进入后台:先调用 applicationWillResignActive,再调用applicationDidEnterBackground2. 双击home键,程序进图标入任务管理器:只调用applicationWillResignActive。如果你点击别的程序,那么别的程序进入前台,本App调用applicationDidEnterBackground3. 上拉,下拉菜单,程序仍在前台:只调用applicationW原创 2015-04-01 10:22:02 · 2361 阅读 · 0 评论