
iOS
CloverZhu
这个作者很懒,什么都没留下…
展开
-
iOS蓝牙开发连接系统或其他APP已经连接、配对成功的蓝牙设备
在蓝牙开发的时候,扫描外设的方法扫描到的设备只能是没有被连接的设备,也就是说如果有设备在本手机中已经连接配对成功了之后就不会被[_centralManager scanForPeripheralsWithServices:nil options:nil];方法扫描到,一开始的手自己也没有注意到这个问题,结果在老板使用的工程中,老是出现系统已经连接上蓝牙设备了,然后就找不到设备了的情况,无奈,是原创 2017-04-05 12:07:49 · 16105 阅读 · 3 评论 -
iOS开发--assign、retain、copy的区别
assign、retain、copy说起来都是比较基础的知识点,在项目中基本上都要声明这些属性特征,但是一直都没有抽出时间来整理这些零散的知识点,现在终于能够来整理一遍。1. assign假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接原创 2016-04-26 21:05:43 · 782 阅读 · 0 评论 -
iOS开发--多线程编程(二)NSThread买票
#import "ViewController.h"@interface ViewController (){ UILabel *showLab;// 当前余票 int curTicketNumber;// 售票窗口名称 NSString *windowName;// 已售票数 int saleTicketNumber;// N原创 2016-04-26 20:10:54 · 1002 阅读 · 0 评论 -
iOS开发--多线程编程(一)NSThread
当用户下载资源,进行图像处理,耗时数据处理等任务时往往希望操作这个任务的时候其他操作不会被中断这时候就用到多线程在单线程中一个线程只能执行一个任务,一个任务处理不完另一个任务就不能开始,这样会影响用户体验,让用户觉得APP卡顿现在苹果手机都是多核处理器,这样我们可以把一个任务分成多个步骤,在不要求顺序的情况下,使用多线程既能解决线程阻塞增加用户体验又原创 2016-04-26 16:01:34 · 540 阅读 · 0 评论 -
IOS开发--CoreData 入门
简介Core Data储存app数据的一个常见替代选择是使用XML属性列表,虽然属性列表可以让你今天的工作变得轻松,但它们也会随后回过头来咬你一口。无论何时你编辑属性列表,发生的变化都是原子性的。这意味着即便是很小的更改要求,整个文件都会被加载到内存中,然后在保存的时候,整个文件都会被写回到硬盘。随着数据量的增长,app也会变得越来越慢。但是如果你基于SQLite数转载 2016-04-13 15:28:07 · 676 阅读 · 0 评论 -
播放本地短音频和本地歌曲
播放音频,首先要导入框架 #import 1,播放短音频:(如简短提示音)// 步骤:1,注册 2,播放// /* NSString *path = [[NSBundle mainBundle]pathForResource:@"message_prompt" ofType:@"mp3"];// SystemSoundID ID = 1;// 1原创 2016-04-12 20:48:32 · 1182 阅读 · 0 评论 -
iOS开发--生成二维码及扫描二维码(原生)
1,生成二维码 需要导入框架:#import 通过滤镜CIFilter生成二维码二维码的内容(传统的条形码只能放数字):纯文本,名片,URL需要声明的属性:// 生成二维码@property (nonatomic, strong) UIImageView *imgView;编写代码,调用 markZbarAction 方法即可原创 2016-04-08 18:03:39 · 521 阅读 · 0 评论 -
iOS开发之XML简介及XML数据解析
XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。上面这段原创 2016-04-06 16:04:47 · 1161 阅读 · 0 评论 -
iOS9.0 升级后的常见问题
1,.dylib后缀的库无法导入ios9 以前的 .dylib后缀的库更改为.tbd2, iOS9 http 不能请求iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL。采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不原创 2015-11-12 11:27:28 · 1788 阅读 · 3 评论 -
UICollectionView 简单使用详解
UICollectionView 其实和UITableview差不多,学会简单的使用后,根据 UITableview 的各种使用逻辑,就能够轻松的实现你想要实现的各种功能,下面直接上代码啦1,ViewController.h 文件- (void)viewDidLoad { [super viewDidLoad]; self.view.background原创 2016-01-11 11:28:51 · 573 阅读 · 0 评论 -
对数组里面的数据进行升序降序排序
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"2019/03/01/",@"2013/03/02",@"2013/03/07",@"2014/03/01/", [NSNull null], nil nil]; array = (NSMutableArray *)[array sorted原创 2015-12-23 17:28:13 · 3841 阅读 · 0 评论 -
iOS开发--多线程编程(三)NSOperation
NSOperation是一个基类(抽象类)不能直接使用,必须使用他的子类它默认是在当前线程进行操作如果单独使用 NSOperation必须手动启动 常与 NSOperationQueue一起使用。在与 NSOperationQueue一起使用会自动开辟线程进行操作不用手动启动 NSOperation系统提供的两个子类 NSInvocati原创 2016-04-27 15:45:00 · 600 阅读 · 0 评论 -
iOS 9 以后的 http 网络请求不了的解决方法
苹果在 iOS9 以后 把 把安全的 http 屏蔽了 ,换成了 安全 的 https ,如果还想要请求 http 的话 在项目里面 的 info.plist 中 增加 App Transport Security Settings 设置 类型 为 字典 Dictionary 在这个字典下面增加 Allow Arbitrary Loads 设置为 bool 类型 ,设置值 为ye原创 2015-11-04 11:09:19 · 864 阅读 · 0 评论 -
iOS开发--多线程编程(四)GCD(Grand Central Dispatch)
GCD (Grand Central Dispatch) GCD底层也是用线程来实现,指示苹果帮咱们封装了具体操作的方法,这样可以让程序员不用关注实现的细节,只需要专注功能的实现 GCD参数 queue:队列 block:任务 GCD 有两种执行任务的方式 1.同步 dispatch_sync(避免在主队列中使用同步执行主线程任务 容易死锁) 2,异步 dispa原创 2016-04-27 17:09:59 · 1040 阅读 · 0 评论 -
UIImageView 图片填充,按比例,平铺
设置 UIImageView 的contentMode属性,根据自己的需要选择下面 UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, // contents scaled to fit with fixed aspect. remainder is transparent原创 2015-11-24 16:38:01 · 6367 阅读 · 0 评论 -
CocoaPods安装第三方SDK报错[!] The dependency `ReactiveCocoa (~> 4.1.0)` is not used in any concrete target.
CocoaPods安装第三方SDK报错:[!] The dependency `ReactiveCocoa (~> 4.1.0)` is not used in any concrete target.解决方法:在podfile 文件中输入如下:platform :ios, “9.0” target "项目名" dopod 'ReactiveCocoa原创 2016-06-23 19:15:33 · 3057 阅读 · 0 评论 -
cocoapods 安装 常见问题及其解决方案汇总
1,首先在终端 输入 如下指令:sudo gem install -n /usr/local/bin cocoapods2,如果出现下面提示:Could not find a valid gem 'cocoapods' (>= 0), here is why: Unable to download data from https://rubygems.o原创 2015-11-02 15:20:55 · 1178 阅读 · 0 评论 -
iOS开发----SQLite的使用
SQLite是嵌入式的和轻量级的SQL数据库。SQLite是由C实现的。广泛用于包括浏览器(支持HTML5的大部分浏览器,IE除外)、iOS、Android以及一些便携需求的小型web应用系统。1 使用原因:存储、检索信息2 SQLite是MySQL精简版。但无需服务器就能进行。3 两个限制:1)必须手动创建数据库 2)没有面向对象的接口。4 如何手动创建数据库。转载 2016-05-23 15:00:55 · 516 阅读 · 0 评论 -
iOS开发--内存管理--学习手动内存管理暂时抛弃ARC以及retain/assign知识
我们为什么需要内存管理?当使用内存达到40M和45M时候会发出警告,如果不处理,占用内存达到120M时直接强制关闭程序。所以出现闪退除了是程序出现逻辑错误,还有可能是内存使用过大。(1)创建一个对象的过程:先分配内存空间存储对象;初始化成员变量;返回对象的指针。(2)对象在创建时,内部会自动创建一个引用计数器retainCount,当retainCount=0时,系统会回收当前对象转载 2016-05-23 14:54:48 · 1209 阅读 · 0 评论 -
利用接口请求数据,以及JSON 解析请求下来的数据
用借口请求数据,在各个API上都说得很清楚的,其实都差不多,主要就看好文档就没问题,直接复制、粘贴,就ok没问题,但是我个人一直都还不太懂,直到自己刚刚做了这个请求和JSON解析把API上的代码复制后,能够请求下来数据,但是自己把想要的数据获取下来却屡屡出了问题,因为自己还不理解json解析,用了json 解析后,终于可以 把自己想要的数据获取了,特别开心,要获取自己想要的数据,只要加上下面代原创 2015-10-25 22:47:36 · 3142 阅读 · 0 评论 -
iOS 开发AFNetWorking 请求,返回错误
在用 AFNetWorking 的时候,直接把使用方法copy 过来了,但是请求数据的时候一直出现如下错误即不支持 text/html 格式解决:在初始化 AFHTTPRequestOperationManager后加入如下代码即可解决:manager.requestSerializer = [AFJSONRequestSerializer serialize原创 2015-11-24 11:44:11 · 1386 阅读 · 0 评论 -
IOS 单例设计模式解读
IOS 中单例设计模式的解读与用法一、单例的作用 顾名思义,单例,即是在整个项目中,这个类的对象只能被初始化一次。它的这种特性,可以广泛应用于某些需要全局共享的资源中,比如管理类,引擎类,也可以通过单例来实现传值。UIApplication、NSUserDefaults等都是IOS中的系统单例。二、单例的写法 单例的写法常用转载 2016-05-27 15:59:18 · 584 阅读 · 0 评论 -
iOS开发----懒加载
所谓的懒加载可以定义为:延时加载,即当对象需要用到的时候再去加载。其实就是所谓的重写对象的get方法,当系统或者开发者调用对象的get方法时,再去加载对象。需要注意的是:重写get方法时,需要先判断对象当前是否为空,不为空的话才去实例话对象。懒加载的优点不需将对象的实例化写到viewDidLoad,可以简化代码,增强代码的可读性对象的实例化在getter方法中,各司原创 2016-05-25 14:44:49 · 565 阅读 · 0 评论 -
转载--- GCD多线程开发
介绍:Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用。设计:GCD的工作原理是:让程序平行排队的特定任务,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务。转载 2016-04-27 17:37:16 · 536 阅读 · 0 评论 -
iOS 数据库SQL 基础
数据库(Database):按照数据结构来组织、存储和管理数据 数据库基本是由表,关系,操作组成 在移动平台开发常用的是SQLite Database 也是数据持久化的一种 数据库是以表格的形式来存储数据的就像个表格 以表(table)为单位 表头的每一个列都是一个字段(column,属性)原创 2016-01-06 11:12:00 · 608 阅读 · 0 评论 -
密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题
由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码。iOS中提供了函数stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码,但是stringByAddingPercentEscapesUsingEncoding的功能并不完善,对一些较为特殊的字符无效。转载 2016-01-06 10:11:58 · 1295 阅读 · 0 评论 -
归档model 里面的数据室, 不能归档数值型数据 或者 解归档不出来的解决方法
我把 model 里面的数据全都归档起来了,在从本地文件中取数据的时候,却发现一直都取不出我想要的数值型数据,其他的字符型数据都是和归档前一样的,想了各种方法,都没有解决,最后看到 数值型数据都是一样的问题,就想到了归档时候用的方法 是不是错了,换了方法后 问题就 解决了没有 解决前 使用的方法修改后的方法解归档时 数值型数据的方法:原创 2015-12-03 17:46:12 · 504 阅读 · 0 评论 -
换取本地图片的高和宽
1,首先换取 图片 所在位置的路径 NSString *imgPath = [[NSBundle mainBundle]pathForResource:@"circle_bg_2@" ofType:@"png"];2, 用一个 UIImage 来获取这张图片UIImage *image = [UIImage imageWithContentsOfFile:imgPath];原创 2015-11-16 11:45:33 · 584 阅读 · 0 评论 -
使用block闭包是实现两个页面间的反向传值
需要反向传值的viewController:在.h文件中声明 block :- (void)tou:(void(^)(NSString*message))block;在.m 文件中指定需要传的具体数值:- (void)tou:(void(^)(NSString *message))block{ block(@"小小");原创 2015-10-15 22:21:08 · 585 阅读 · 0 评论 -
iOS 播放视频
//// ViewController.m// 播放视频//// Created by zhusongxiu on 15/8/21.// Copyright (c) 2015年 zhusongxiu. All rights reserved.//#import "ViewController.h"//播放视频原创 2015-10-15 21:24:00 · 237 阅读 · 0 评论 -
iOS 代理,代理是实现反向传值步骤
在帮忙的地方 .h 文件中:1,声明代理 方法@protocol DownLoadOperationDelegate - (void)didFinishDownLoadWithImage:(UIImage *)iamge;@end2,#pragma mark -----------代理传值2,声明一个属性作为代理原创 2015-10-15 21:56:30 · 635 阅读 · 0 评论 -
录制音频
//// ViewController.m// 录音//// Created by zhusongxiu on 15/8/20.// Copyright (c) 2015年 zhusongxiu. All rights reserved.//#import "ViewController.h"#import原创 2015-10-15 21:41:14 · 532 阅读 · 0 评论 -
第三方判断网络状态
一, 在 cocoapods 上 安装好 AFNetworking 二 ,在需要判断网络状态的 viewController 上 导入 AFNetworking .h 方法一:使用通知: // 当网络状态发生改变的时候 Reachability 会发送 kReachabilityChangedNotification 这个通知,通知观察者原创 2015-10-13 22:06:28 · 602 阅读 · 0 评论 -
获取字体的长度(宽度)和高度,字体尺寸决定控件尺寸
这里我把获取字体的长度 和 高度 封装成一个方法,方便调用#pragma mark ------- 计算字体长度 和 宽度 -------- (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxSize:(CGSize)maxSize{ NSDictionary *attrs = @{NSFontA原创 2015-10-13 14:41:53 · 6652 阅读 · 0 评论 -
根据自己设定的尺寸裁剪图片大小
这里我把根据图片指定大小裁剪图片的算法封装成一个方法如下:#pragma mark -裁剪图片//需要传过来的参数有 : 图片 image 和 自定的尺寸- (UIImage *)image:(UIImage*)image byScalingToSize:(CGSize)targetSize {//原始 iamge UIImag原创 2015-10-11 22:13:17 · 3971 阅读 · 0 评论 -
iOS 之 App 第一次启动 app 使用欢迎页
我们在使用很多 app 的时候,都会在第一次使用的时候 有欢迎页,之后再次使用就没有欢迎页了,如果没做过的话,总是感觉特别复杂,做了才知道真的很简单,下面是我做的例子:1,首先 创建一个 工程, 在 这个工程里面 有了一个 viewController ,在做这个例子的时候,需要至少两个 viewController ,那么需要再创建一个,创建的viewController 我命名为 Welc原创 2015-11-11 14:21:20 · 2785 阅读 · 0 评论 -
iOS定位,地图详解
LBS: location Based Service (基于定位服务)位置服务要实现地图、导航功能,首先要熟悉定位功能,苹果提供给咱们 CoreLocation 框架进行定位CoreLocation 可以独立使用Core Location 中主要包含了 定位、地理编码、地理反编码 功能CoreLocation 框架中的所有数据类型都是以 CL开头CoreLocation 这个类里原创 2015-10-04 09:02:21 · 1453 阅读 · 0 评论 -
解决UINavigationBar导航栏 和 tabBar 菜单栏上面平铺视图
在做类似弹出框的时候,要把半透明视图铺在整个页面上,但是却总是不能遮住导航栏和菜单栏,只能把视图铺在中间下图一样无论如何改坐标,都是一样的结果,先就这个问题的一个简单方法1,首先导入 #import "AppDelegate.h"2,写一样平铺的视图UIView *viewi = [[UIView alloc]initWithFr原创 2015-11-18 15:25:31 · 1303 阅读 · 0 评论 -
iOS重新定义系统自带的方法,如 重定义 CGRectMake 和 CGPointMake 可以解决屏幕适配的问题
在网上找了些屏幕适配的方法,因为之前的适配把屏幕划分为不同比例的部分,还有就是使用 storyBoard ,由于是纯代码开发,又是在基本功能都完成了之后 才适配,就想着找一些简单的适配方法手机型号宽长iPhone 4s320480iPhone 5320568iPhone 5s320568iPhone原创 2015-12-10 17:34:39 · 5439 阅读 · 1 评论 -
判断邮箱,手机号码,身份证,用户名,昵称等输入格式是否正确的 正则表达式
//邮箱+ (BOOL) validateEmail:(NSString *)email{ NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithForma原创 2015-11-25 16:16:40 · 10038 阅读 · 0 评论