ios
文章平均质量分 72
HX_lei
这个作者很懒,什么都没留下…
展开
-
常见的异常崩溃二
1、越界问题,包括数组越界(objectAtIndex:)、字符串越界(characterAtIndex:);异常显示:NSRangeException: -[__NSArrayI objectAtIndex:]: index 10 beyond bounds [0 .. 9]';方案:在根据下标取值时,先进行边界检查判断,如果没有越界方可取值。2、数据集合类型,如字典、数组中插入空n...原创 2018-10-10 11:15:48 · 592 阅读 · 0 评论 -
ScrollView 与 Autolayout
学 Autolayout,当涉及到 ScrollView 时,很多人面对满屏幕红色错误不知所措,为什么明明以前没问题的约束到了这儿就成了错误。比如下面这种情况:一个蓝色的 UIView,设其长宽约束分别为 210,200。上、左和右间距为 55。如此设置这个 View 的位置就被确定了。没有错误,没有警告。可同样的方法,到 UIScrollView 却有触目惊心的红转载 2016-12-06 15:40:50 · 377 阅读 · 0 评论 -
在Xcode中使用Git进行源码版本控制
在应用程序开发过程中,很重要的一部分工作就是如何进行源码的版本控制。当代码出现问题时,我们就需要将代码恢复到原先正常的版本。如果是多个人共同开发一个项目,那么代码的控制就会非常复杂。幸运的是,开发者不需要自己控制这些,因为有专门的软件来负责,叫做版本控制系统。版本控制系统,或者说修改控制系统,实际上是一种检测源文件的改变并将其保存留作以后参考使用的机制(软件)。此外,它还能记录其他有用信息转载 2016-11-23 11:40:48 · 459 阅读 · 0 评论 -
Xcode7中你一定要知道的炸裂调试神技
Xcode7中苹果为我们增加了两个重要的debug相关功能。了解之后觉得非常实用,介绍给大家。1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS?EXC_BAD_ACCESS一直是很多开发者的噩梦,因为这个错误很不直观,出现后往往要花很长时间才能定位到错误。苹果这次带来了革命性的提升。在项目的Scheme中Diagnostics转载 2016-11-23 09:41:47 · 295 阅读 · 0 评论 -
coreData初步认识
coreData初步认识根据这片文档可以自己初步建立一个coreData,进行简单的数据的增删改查。1、新建工程,记得勾选Use Core Data2、建立好以后可以看到xxx.xcdatamodeld,在这里可以添加实体和实体的属性。需要注意的是:实体名字必须以大写开头。3、然后新建一个file,记得是NSManagedObject cubclas转载 2016-11-22 15:13:04 · 278 阅读 · 0 评论 -
Core Data的理解
一、基础概念深入1.NSManagedObjectContext被管理数据上下文就像便笺簿当从数据持久层获取数据时,相当于把这些临时的数据拷贝写在便笺簿上,然后就可以随心所欲的修改这些值。通过上下文,可以对数据记录NSManagedObject进行添加删除更改,记录更改后支持撤销和重做。除非你保存这些数据变化,否则持久层的东西是不会变化。通常我们将转载 2016-12-01 09:55:56 · 332 阅读 · 0 评论 -
苹果退出有两种方式:exit(0);和abort();
现在有的人用着苹果手机却拿安卓手机的眼光来用,非要弄一个退出app的控件出来。苹果退出有两种方式:exit(0);和abort();exit和abort都是终止程序执行退出的处理函数,其中exit是正常退出,abort是异常退出,退出时会输出错误信息,然后再调用exit退出。用户体验来说,exit就像是程序崩溃了,直接退出程序。abort就像是点击了home键,有过渡动画,一般我们在使转载 2016-11-30 17:28:45 · 6173 阅读 · 0 评论 -
description方法
description基本概念1.NSLog(@"%@", objectA);这会自动调用objectA的description方法来输出ObjectA的描述信息.2.description方法默认返回对象的描述信息(默认实现是返回类名和对象的内存地址)3.description方法是基类NSObject 所带的方法,因为其默认实现是返回类名和对象的内存地址, 这样的话,使用N转载 2016-11-14 17:29:17 · 1291 阅读 · 0 评论 -
在代码中使用Autolayout – intrinsicContentSize和Content Hugging Priority
我们继续来看在代码中使用Autolayout的话题。先说intrinsicContentSize,也就是控件的内置大小。比如UILabel,UIButton等控件,他们都有自己的内置大小。控件的内置大小往往是由控件本身的内容所决定的,比如一个UILabel的文字很长,那么该UILabel的内置大小自然会很长。控件的内置大小可以通过UIView的intrinsicContentSize属性来获取内置转载 2016-11-17 16:43:24 · 374 阅读 · 0 评论 -
自动适应cell的高度
1. 如何自动适应cell的高度在IOS的布局中,计算和适应cell的高度是个经典的问题, 在frame时代,我们都知道用sizeWithFont: 先计算出文字的高度,然后通过计算得出cell的高度,然后赋予heightForRow:。那在Autolayout时代如何计算cell的高度呢?因为sizeWithFont:方法已经不太实用了。其实Autolayout不但更简单,还可以转载 2016-11-17 16:29:46 · 612 阅读 · 0 评论 -
获取版本号[[NSBundle mainBundle] infoDictionary]
很多朋友改版本号,通过改变属性,比如说self.versionLabel = @”1.0”,版本更新后,self.versionLabel = @”1.1” 如果通过这样改,那就很麻烦了。但是如果通过代码获取info的version信息,那就很方便,以后版本更换后,只需要改变info的version,就可以了。//获取当前版本号 NSDictionary *infoDic =转载 2016-11-14 15:57:43 · 594 阅读 · 0 评论 -
iOS本地化 NSLocalizedString的使用
在iOS设备,包括iPhone和iPad是全球可用。显然,iOS用户都来自不同国家,说着不同的语言。为了提供出色的用户体验,你可能希望以多种语言提供您的应用程序。适应应用程序以支持特定语言的过程通常被称为本地化。Xcode中有本地化的内置支持。所以它很容易为开发商通过本地化的功能和一些API调用国际化的应用程序。一、NSLocalizedString的定义:#define转载 2016-11-14 15:54:59 · 689 阅读 · 0 评论 -
iOS -- UITableView基本使用
1、tableView层次 结构2、cellcell结构contentView下默认有3个子视图2个是UILabel(textLabel、detailTextLabel)1个UIImageView(imageView)UITableViewCellStyle属性用于决定使用contentView的哪些子视图,以及这些子视图在con转载 2016-11-14 15:11:10 · 323 阅读 · 0 评论 -
优化UITableViewCell高度计算的那些事
前言这篇文章是我和我们团队最近对UITableViewCell利用AutoLayout自动高度计算和UITableView滑动优化的一个总结。从这篇文章里,你可以读到:UITableView高度计算和估算的机制不同iOS系统在高度计算上的差异iOS8 self-sizing cellUITableView+FDTemplateLayoutCell如何用一句话解决高度问题UI转载 2016-11-14 14:56:44 · 263 阅读 · 0 评论 -
appearance与appearanceWhenContainedIn的使用
+ appearance修改整个程序中某个class的外观[[UINavigationBar appearance] setTintColor:myColor];+ appearanceWhenContainedIn: 当某个class被包含在另外一个class内时,才修改外观。 [[UILabelappearanceWhenContainedIn:[cusSear转载 2016-10-07 17:02:02 · 1534 阅读 · 0 评论 -
[Xcode 7.2]Xcode菜单栏之你不知道的那点事
本文调研Xcode的版本是 7.2,基本是探索了菜单的每一个按钮。虽然从xcode4一直用到了xcode7,但是一般都只是用了一些基础的功能,其实菜单的按钮并不都是没有用,而是很有用只是你不知道罢了。下面划了删除线的选项是太基础的选项可以忽略,标红的选项是需要注意的。Xcode - MenuFile:转载 2016-11-24 11:12:14 · 1743 阅读 · 0 评论 -
Xcode中的 workspace, project, target, scheme
最近在做SDK兼容性测试发现一个问题,就是编译出来的SDK,在iOS8以下的系统中不能用。查了下,发现是编译设置错了,虽然我target设置的是支持iOS6以上的,但是工程设置的还是iOS8以上。xib文件编译的版本是根据project设置,而不是target,这个也是为什么在低于iOS8中不能用的原因。正好之前对SDK开发进行了工程拆分和重组,也使用了workspace,顺便也了解了些编译相关的转载 2016-12-09 15:59:51 · 364 阅读 · 0 评论 -
关于静态库、动态库的区别汇总
linux中静态库和动态库的区别一、不同库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编转载 2016-12-15 15:40:01 · 325 阅读 · 0 评论 -
常见的线上异常崩溃一
一.UITableView reloadData的崩溃:[tableView reloadData]后当需要立即获取tableview的cell、高度,或者需要滚动tableview,那么直接在reloadData后执行代码是会有问题的。(如 在项目中用到scrollToRowAtIndexPath,但程序一旦调用scrollToRowAtIndexPath就出错,经分析是数据源和tablev...原创 2018-10-10 11:14:29 · 655 阅读 · 0 评论 -
ios 获取当前准确时间
获取当前时间:(之前做倒计时时发现一些bug,这里对获取当前时间进行总结)启动app时发送服务器时间请求获取当前最新时间,存储到内存;退到后台或锁屏手机后再进入前台情况下最新时间:这里处理的方案是将(启动app时获取到的服务器时间 - 当时获取服务器时间时处系统运行时长 + 现在的系统运行时长)这里只要能得到系统运行时长即可:了解下ios关于时间的处理:1.NSDate对象...原创 2018-10-10 11:12:38 · 3562 阅读 · 0 评论 -
iOS 崩溃日志 Backtrace的符号化
iOS的崩溃日志配合dsym文件可以找到崩溃时的backtrace,这是解决崩溃的最重要的信息.如果是在同一台mac上打包, 导入crash log时候会自动将backtrace符号化,可以看到方法名, 文件名和行号但是,有时候发版的包不是在你的mac上打包的,xcode找不到对应的符号表, backtrace没能符号化如下所示:Last Exception B转载 2017-04-13 18:39:15 · 1416 阅读 · 0 评论 -
iOS 简单理解类的本质
1.类也是个对象类是一个对象是Class类型的对象简称类对象Class类型的定义// 一个任意的类型,表示一个Objective-C类typedef struct objc_class *Class;类名就代表着类对象,每个类只有一个类对象 获取类对象 // 获取类对象两种方式person1 和 person2 Class person1 =转载 2017-03-24 14:12:52 · 507 阅读 · 0 评论 -
类的本质-类对象
1.本质类的本质其实也是一个对象(类对象)程序中第一次使用该类的时候被创建,在整个程序中只有一份。此后每次使用都是这个类对象,它在程序运行时一直存在。类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本,继承层次,以及消息与函数的映射表等类对象代表类,Class类型,对象方法属于类对象如果消息的接收者是类名,则类名代表类对象所有类的实例都由类对象生成,类对象会把实例的isa的值转载 2017-03-24 14:07:53 · 663 阅读 · 0 评论 -
理解“类对象”的用意
第14条:理解“类对象”的用意Objective-C实际上是一门极其动态的语言。第11条讲解了运行期系统如何查找并调用某方法的实现代码,第12条则讲述了消息转发的原理:如果类无法立即响应某个选择子,那么就会启动消息转发流程。然而,消息的接收者究竟是何物?是对象本身吗?运行期系统如何知道某个对象的类型呢?对象类型并非在编译期就绑定好了,而是要在运行期查找。而且,还有个特殊的类型叫做id,它能转载 2017-03-24 14:06:32 · 461 阅读 · 0 评论 -
CFBundleURLType 与 LSApplicationQueriesSchemes 的区别
CFBundleURLType:当前APP的scheme记录, 通过schema可在其它App中打开当前AppLSApplicationQueriesSchemes是从iOS9时被引入的。用意:当前APP允许访问的APP有哪些,即白名单,需要通信双方 均设置为对方的scheme,否则当调用对方App时,系统会告诉你This app is not allowed to query转载 2017-03-10 16:52:07 · 2562 阅读 · 0 评论 -
APP提交审核时,这些坑你本可以直接避免
在APP提交app store审核时,以下这些坑你是可以直接避免的。蝉大师在知乎整理出在APP提交审核时要注意的事情,让自身应用顺利上线。 1.软件名字冲突。提交时发现有软件名字一样。丫停的。只能换。想好软件名字搜一下先。2.等级评定,娱乐相关所以不要你勾选后发现4+可以。然并乱。必须17+走起3.支付上,要求用户即使换手机或卸载软件,所购买的物品还可以继续使用。转载 2017-03-10 16:48:39 · 1608 阅读 · 0 评论 -
重载hash与isEqual:方法
前言NSObject 自带了hash与isEqual:方法,服务于具有hash表结构的数据结构。NSObject自带的hash函数相当于hash表中的f(key)函数中的key,这“唯一”的key需要用户自己产生,至于用什么算法由用户自己决定。 准备//// Model.h// Hash//// Created by YouXianMing on转载 2016-12-29 11:02:37 · 697 阅读 · 0 评论 -
oc消息转发机制
Class 类型对象OC本身是一种强类型语言,但其运行时功能让它又有了动态语言的特点。OC中对象的类型和对象所执行的方法都是在运行时阶段进行查找并确认的,这种机制被称为动态绑定。想要弄清楚运行时如何能够实现动态绑定机制,首先要了解OC中对象的本质。OC是C语言的超集,所以OC中面向对象的功能在底层也是使用C语言来实现。我们在OC中使用的对象,通常指的是储存该对象内存地址的一个指针变转载 2017-01-05 16:52:59 · 449 阅读 · 0 评论 -
[Objective-C]关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。 关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。 关联是基于关键字的,因此,我们转载 2016-12-28 11:27:44 · 313 阅读 · 0 评论 -
iOS开发 之 不要告诉我你真的懂isEqual与hash!
为什么要有isEqual方法?isEqual方法的作用大家肯定是知道的:判断两个对象是否相等但是判断相等不是已经有==运算符了么, 为什么还要isEqual方法?这是因为:对于基本类型, ==运算符比较的是值; 对于对象类型, ==运算符比较的是对象的地址(即是否为同一对象)注意: 上述==运算符的说明适用于Objective-C和Java等不支持运算符重载转载 2016-12-26 14:21:54 · 3049 阅读 · 0 评论 -
__NSTaggedPointerString 转码问题
__NSTaggedPointerString这个类型是标签指针字符串,这是苹果在 64 位环境下对 NSString,NSNumber 等对象做的一些优化。简单来讲可以理解为把指针指向的内容直接放在了指针变量的内存地址中,因为在 64 位环境下指针变量的大小达到了 8 位足以容纳一些长度较小的内容。于是使用了标签指针这种方式来优化数据的存储方式。从他的引用计数可以看出,这货也是一个释放不转载 2016-12-22 14:44:31 · 1695 阅读 · 0 评论 -
iOS 静态库,动态库与 Framework 浅析
静态库与动态库的区别首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要转载 2016-12-15 17:40:16 · 2762 阅读 · 0 评论 -
iOS开发——创建你自己的Framework
如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件。然而,这种方法并不是很优雅。它会暴露所有的实现细节,而这些实现你可能并不想开源出来。此外,开发者也可能并不想看到你的所有代码,因为他们可能仅仅希望将你的这份漂亮代码的一部分植入自己的应用中。另一种方法是将你的代码编译成静态库(library),让其他开发者添加到自己的项目中。然而,这需要你一并公布所有的公开的头文件,实在是非常转载 2016-12-15 16:43:34 · 430 阅读 · 0 评论 -
十六进制的颜色值直接转为ios可用的UIColor
//////////////////////////// @interface UIColor (extension) + (UIColor*) colorWithHex:(NSInteger)hexValue alpha:(CGFloat)alphaValue; + (UIColor*) colorWithHex:(NSInteger)hexValue; + (NSString *)转载 2016-10-07 16:57:45 · 345 阅读 · 0 评论 -
IOS-- UIView中的坐标转换
// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值- (CGPoint)convertPoint:(CGPoint)point from原创 2016-10-07 14:01:20 · 349 阅读 · 0 评论 -
UIGestureRecognizer属性、代理方法以及子类
在iOS中添加手势比较简单,可以归纳为以下几个步骤:1、创建对应的手势对象; 2、设置手势识别属性【可选】; 3、附加手势到指定的对象; 4、编写手势操作方法;一、UIGestureRecognizer有六个子类,分别为:1、UILongPressGestureRecognizer(长按)2、UIPanGestureRecog转载 2016-11-09 11:23:13 · 1306 阅读 · 0 评论 -
ios -- 监听方法总结
发送通知发送通知的目的是用来给外部一些信息,供外部的控制器来监听发送通知的对象内部的一些行为。//某人发送了一个名为大新闻的通知,通知附带内容infoNSNotification *note = [NSNotification notificationWithName:@“大新闻” object:self userInfo:@{ @“time” : @“2015.6.1"原创 2016-06-22 17:48:42 · 917 阅读 · 0 评论 -
ios -- 富文本
之前做项目时遇到一个问题: 使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结果在XCode中查遍其所有属性才发现,UITextView居然没有调整行间距的接口,于是忍住不心里抱怨了一下下。但是问题还是要解决的,上网一查才发现,iOS不仅有富文本处理的功能,而且对于文字排版的处理转载 2016-06-22 17:32:14 · 477 阅读 · 0 评论 -
Xcode插件失效原因
Xcode插件失效原因并不是升级或重装后原本的插件被删掉了,其实插件还在这个目录~/Library/ApplicationSupport/Developer/Shared/Xcode/Plug-ins。之所以插件失效,是因为每个插件只供特定UUID的Xcode使用,更新后uuid改变,于是便不能正常使用。解决办法1.查看当前Xcode的uuid在终端执行defa原创 2016-06-22 17:13:34 · 352 阅读 · 0 评论 -
iOS上传图像到服务器PHP接收的几种方法
1. 将图片转换为Base64编码,POST上传。PHP将Base64解码为二进制,再写出文件。缺点:不能上传较大的图片 // iOS(Swift)func upload(image: UIImage, url: String) { let imageData = UIImageJPEGRepresentation(image1. 将图片转换为Base64编码,POST转载 2016-07-28 12:37:09 · 11180 阅读 · 0 评论