![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS杂谈
我来看烟花
芝兰生于空谷,不以无人而不芳!
展开
-
MVC设计框架
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中.原创 2016-01-21 21:33:22 · 386 阅读 · 0 评论 -
iOS Apple Pay详解以及处理支付逻辑(附带Demo)
Apple Pay的简单介绍。Apple Pay并不是独立的第三方支付服务,相比较支付宝和微信支付,他没有自己的账户,也不参与资金的流动, Apple Pay只是将原有的实体银行卡变成手机上“虚拟的银行卡”。Apple Pay依赖iPhone系统底层的整合,在便捷程度上,非第三方支付能比。如果你们真的要和第三方的支付对比的话.虎哥在这里只说一句话:一个是系统级的,一个是应用级的,剩下的,你转载 2016-04-22 09:15:50 · 2521 阅读 · 0 评论 -
forin的方式遍历集合的坑
今天在修改某项需求的时候,需要在遍历的时候将匹配项移除掉,采用的时forin的方式遍历,然后运行的时候却crash掉了for (NSString*str in self.btnArray) { if ([imageName isEqualToString:str]) { [self.btnArray removeObject:str];原创 2016-04-22 17:14:08 · 1101 阅读 · 0 评论 -
发布IOS产品被拒后如何再上传新发布包
前两天提交公司产品2.0.7版本到苹果审核,昨天提示被拒绝。被拒原因就不描述了。我们经过修改后,重新打包上传,可是怎么也提交不了。因为在苹果后台上已经存在2.0.7版本的发布包了(就是被拒的那个)。这可怎么办?难不成将版本修改成2.0.8发布?但这样不好啊,会让用户以为中间那个版本漏过了。解决方法:在Xcode上,可以查看一下项目的工程配置。在info页中,有两个版本号可填,不知道转载 2016-06-01 14:49:29 · 382 阅读 · 0 评论 -
Beta 版软件如何成功发布App
你是否也像我一样手贱升级了beta版 OS X或者Xcode,然后发布新版App的时候说啥也发布不上去。。Xcode还好,大不了重新装个正式版,beta版系统就惨了,第一反应还得重装系统了,还是降级的。。囧后来发现只要改下系统编译号就可以机智通过的。。特此记录,方便日后继续手贱。问题描述就是下面这段iTunnes Connect上的提示,让我苦苦纠结了许久。。转载 2016-06-01 16:47:55 · 773 阅读 · 0 评论 -
ReactiveCocoa之基础
1.ReactiveCocoa简介ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。2.ReactiveCocoa作用在我们iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用不同的方式来处理。比如按钮的点击使用action,ScrollV转载 2016-05-22 12:43:24 · 453 阅读 · 0 评论 -
ReactiveCocoa之进阶篇
1.ReactiveCocoa常见操作方法介绍。1.1 ReactiveCocoa操作须知所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,因此只要继承RACStream就有了操作处理方法。1.2 ReactiveCocoa操作思想运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序编程接口:方转载 2016-05-22 12:44:51 · 532 阅读 · 0 评论 -
CocoaPods安装
当然,以下步骤均在 MAC 终端中操作1. 第一步,我们需要移除 MAC 自带的 ruby 环境 gem sources --remove https://rubygems.org/2.添加成国内淘宝的镜像gem sources -a https://ruby.taobao.org/3.验证当前的镜像到底是原创 2016-04-05 22:29:42 · 1053 阅读 · 0 评论 -
手机推送原理
最近做一个物流类的app,要实现把订单推送到送货员手机上,于是就想搞清楚推送这个原理....移动手机推送消息的方式很常见,手机每天都能收到好多推送消息,经过研究发现,这些推送服务的原理都是维护一个长连接(要不不可能达到实时效果),但普通的socket连接对服务器的消耗太大了,所以才会出现像MQTT这种轻量级低消耗的协议来维护长连接。 我们首先了解一下为什么androi原创 2016-06-27 17:09:17 · 1740 阅读 · 0 评论 -
iOS二维码扫描
做iOS的二维码扫描,有两个第三方库可以选择,ZBar和ZXing。今天要介绍的是iOS7.0后AVFoundation框架提供的原生二维码扫描。首先需要添加AVFoundation.framework框架到你工程中build phase的"Link Binary With Libraries"之下,然后就可以开始了。一、做好准备工作,搭建UIUI效果如图 IBOu转载 2016-06-28 11:37:18 · 400 阅读 · 0 评论 -
Runtime
一、runtime简介RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。事实证明:在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过转载 2016-05-22 12:41:24 · 187 阅读 · 0 评论 -
arc4random
最近在做彩票的项目,有到了随机算法,在这里分享一下:一.常用方法:arc4random例:获取一个随机整数,范围在[from,to),包括from,不包括to(arc4random() % (to – from + 1))+ from 二、生成不重复随机数思想:其原理就是利用两个数组,第一个数组存放要随机的原始数据,第二个数组存放结果;然后arc4r原创 2016-05-21 14:13:29 · 897 阅读 · 0 评论 -
Git的使用
我们就以Github为例简单来说Git可以分为以下几点:接下来我们就进行GitHub服务端创建1、首先你要有一个Github账号 2、一般我们使用的git管理工具都是SourceTreeSourceTree是客户端的版本控制工具,是一个又Git命令组合而成的可视化工具,支持创建、克隆、提交、push、pull、和合并等操作转载 2016-06-22 18:28:15 · 398 阅读 · 0 评论 -
github常见操作
1. 在本地修改从github上clone的仓库后上传到github从github上clone一个自己的仓库到本地: git clone 自己的github仓库(https或者SSH仓库)修改本地仓库中的文件,将所有修改的文件添加到暂存区中 git add .提交修改 git commit -m "提交说明"将本地仓库修改的文件都上传到github仓库 git原创 2016-07-08 10:12:54 · 418 阅读 · 0 评论 -
在xcode中怎么看真机的沙盒
在iOS开发之沙盒机制(SandBox),我们了解到如何查看模拟器的沙盒内容。直接在Finder->前往->前往文件夹里输入: /Users/ligang/Library/Application Support/iPhone Simulator/这样就可以查看模拟器的沙盒内容。在平时开发中,我们应该大部分用的是真机测试。如果需要在沙盒里操作文件,那么我们可以通过观察真机沙盒的内容,来确转载 2016-10-09 16:24:05 · 1012 阅读 · 0 评论 -
iOS开发如何判断字符串是否是整数,浮点数,纯数字
//判断是否为整形:- (BOOL)isPureInt:(NSString*)string{ NSScanner* scan = [NSScanner scannerWithString:string]; int val; return[scan scanInt:&val] && [scan isAtEnd];}//判断转载 2016-11-15 12:50:02 · 2745 阅读 · 0 评论 -
iOS 10 适配 ATS(app支持https通过App Store审核)
一. HTTPS简单的来说,SSL/TSL通过四次握手。SSL协议的工作流程:服务器认证阶段:客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;服转载 2016-12-21 13:29:30 · 811 阅读 · 0 评论 -
用淘宝的接口获取手机ip
-(void)urlRequestOperation{NSString *URLTmp = @"http://ip.taobao.com/service/getIpInfo.php?ip=myip";NSString *URLTmp1 = [URLTmp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //转码原创 2016-05-30 14:09:26 · 2069 阅读 · 0 评论 -
另一种归档
// 这个协议方法是用来编码的// 是针对于该对象中的属性进行编码和解码- (void)encodeWithCoder:(NSCoder *)aCoder { unsigned int count = 0; // 遍历这个类的所有的成员变量 Ivar *ivars = class_copyIvarList([self class], &count)原创 2016-04-21 22:47:22 · 455 阅读 · 0 评论 -
KVC键值编码
kvc,键值编码,是一个非正式的协议,它提供一种机制来间接访问对象的属性。直接访问对象是通过调用访问器的方法实现,而kvc不需要调用访问器的设置和获取方法,可以直接访问对象的属性。下面介绍一下kvc的用法:1、对属性赋值kvc是通过键值对的方式对属性设置值,提供了下面的方法,相当于访问器中的set方法。value为要设置的值,key是字符串,字符串中内容为为属性的名称-原创 2016-01-20 12:52:16 · 461 阅读 · 0 评论 -
字符串在指定区域内按照指定的字体显示时,需要的高度和宽度
Computing Metrics for a Single Line of Text– sizeWithFont: 同下面,换行方式默认取NSLineBreakByWordWrapping– sizeWithFont:forWidth:lineBreakMode: 将字符串放入指定宽度,如果不够,就依据换行方式截断字符串,返回其大小。– sizeWithFont:minFontSiz原创 2016-01-17 17:48:19 · 903 阅读 · 0 评论 -
登陆时常用的判断
1、判断用户名,在2-16位-(BOOL)CheckInput:(NSString *)_text{ NSString *Regex = @"^\\w{2,16}$"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", Regex]; return [原创 2016-03-16 13:33:15 · 261 阅读 · 0 评论 -
用Category给类中添加属性
在一般情况下,我们是不能向Category中添加属性的,只能添加方法,但有些情况向,我们确实需要向Category中添加属性,而且很多系统的API也有一些在Category添加属性的情况,例如我们属性的UITableView的section和row属性,就是定义在一个名为NSIndexPath的分类里的,如下 那这到底是怎么实现的呢?iOS运行时机制,简单来说,就是苹果给开发这原创 2016-03-06 21:10:49 · 343 阅读 · 0 评论 -
关于block内存问题的分析
话不多说, 先根据代码结果看block到底在内存的哪个分区:一:MRC下, 声明的block实现部分,没有引入外界的任何局部变量int main(int argc, const char * argv[]) { @autoreleasepool { //定义bolck void(^myBlock)() = ^{原创 2016-01-22 22:19:15 · 509 阅读 · 0 评论 -
iOS程序的执行流程和响应者链的关系
iOS一个简单的程序执行流程: 1.程序的入口是main函数 2.main函数内部实现了,把应用程序的代理, 交给了Appdelegate 3.Appdelegate成为代理,需要遵守协议 4.协议方法中,有一个重要的方法didFinishLaunching, 进入到这个方法, 就说明程序已经加载完成 5.iOS应用展示视图,原创 2016-01-21 21:12:32 · 455 阅读 · 0 评论 -
Xcode插件之Alcatraz的安装和遇到的问题
之前在Xcode5.1上面安装过Alcatraz插件,今天按照之前的步骤在Xcode6.3安装,步骤如下:1.在终端中输入如下命令行:mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins;curl -Lhttp://git.io/lOQWeA原创 2016-01-06 12:57:44 · 336 阅读 · 0 评论 -
关于controller的瘦身计划
controller由于其独特性,在很多情况下是不能复用的,当然造成controller不能复用的原因之一就是:其VC种处理view赋值懂的逻辑代码太多,这部分代码由于其特殊性,在每个VC中又不是一样的,所以给VC减肥。首先需要我们把VC中处理view的逻辑抽离出来,举个例子:我们用的UITableview,这个ui控件在我们项目种所使用的频率是极其高的,通原创 2016-01-05 15:59:51 · 391 阅读 · 0 评论 -
关于支付(支付宝和微信)
使用支付宝进行一个完整的支付功能,大致有以下步骤:1>先与支付宝签约,获得商户ID(partner)和账号ID(seller) (这个主要是公司的负责)2>下载相应的公钥私钥文件(加密签名用)3>下载支付宝SDK4>生成订单信息5>调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道6>支付完毕后返回支付结果给商户客户端和服务原创 2016-01-22 19:24:40 · 933 阅读 · 0 评论 -
iOS的观察者模式
IOS的观察者模式在IOS的使用频率并没有代理方法那么高,从tableView到textField,在大多数情况下,都采用的是定义代理和实现代理的方式来进行函数的回调.虽然说,观察者模式在效率上不如代理模式,但是使用观察者模式可以实现程序的解耦,并且在层次结构比较深的地方,使用观察者也比层层代理更加方便。接下来,我们就对观察者模式进行介绍:观察者模式:观察者模式,定义了在一对多的情原创 2016-03-16 21:16:04 · 819 阅读 · 0 评论 -
常见的项目文件介绍
一、项目文件结构示意图二、文件介绍 1.products文件夹:主要用于mac电脑开发的可执行文件,ios开发用不到这个文件 2.frameworks文件夹主要用来放依赖的框架 3.test文件夹是用来做单元测试的 4.常用的文件夹(项目名称文件夹) (1)XXXinfo.plist文件(在该项目中为 01-常见文件-Info.plis原创 2016-02-25 16:09:00 · 745 阅读 · 0 评论 -
iOS开发之通知中心、KVC、KVO
前言本文的内容可能跟之前相比会比较长,主要因为讲了通知、KVO、KVC三个知识点,但我自认为条理还算清晰。建议学完一个敲一下,再进行下一个知识点的学习。通知中心What是一种一对多的信息广播机制,一个应用程序同时只能有一个NSNotificationCenter(通知中心)对象,因为如果有多个通知,发送通知的时候就不知道是该给谁发送了。Wheredelegate和b转载 2016-04-01 13:52:31 · 341 阅读 · 0 评论 -
60秒倒计时
__block int timeout=60; //倒计时时间 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_原创 2016-04-26 10:55:30 · 512 阅读 · 0 评论 -
Xcode插件指南
安装方法从GitHub上下载对应的插件后,直接运行安装(PS:下一种方法,包含这种fa)使用Alcatraz插件管理器 --- 小编推荐方法下载地址 : https://github.com/alcatraz/Alcatraz安装:1)下载后运行运行成功.png2)运行成功后关闭Xcode,是完全退出哦!随便打开电脑中的一个工程,会出现下图转载 2016-04-27 08:49:31 · 349 阅读 · 0 评论 -
iOS开发各种证书问题
引言 关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾。对于一个iOS开发小白、半吊子(比如像我自己)抑或老兵,或多或少会有或曾有过以下不详、疑问、疑惑甚至困惑:什么是App ID?Explicit/Wildcard App ID有何区别?什么是App Gro转载 2016-05-11 11:25:21 · 857 阅读 · 0 评论 -
iOS NSString,NSArray,NSDictionary的Copy属性使用
在平时使用NSArray,NSDictionary以及NSString的过程中,经常会默认写了strong 属性,或者按照规范使用Copy,在Apple的规范中,是提倡我们使用copy的属性。基本原理简单来说,copy属性就像字面意思一样,在赋值的时候会系统自动copy一份内存出来,修改新的变量,并不会导致原先的变量出现改变即:@property (nonatomic,stro转载 2016-05-12 13:40:14 · 2540 阅读 · 0 评论 -
iOS收到推送后,跳转到某一页面
用的是友盟推送, 配置证书这一环节直接跳过了,这个网上有讲的。给大家讲一点常识,友盟推送分生产环境和开发环境。用手机刷上去的就是开发环境, 发布到苹果商店就是生产环境,没发布前怎么模拟呢, 用普通账号打的ad hoc 包, 用企业账号打的ad hoc 包或者enterprise包都可以测试生产环境。开发环境下, 你把APP删掉,重新调试上来,就会生成一个新的device_tok转载 2016-04-18 11:01:46 · 349 阅读 · 0 评论 -
正则表达式
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。一、校验数字的表达式1. 数字:^[0-9]*$2. n位的数字:^\d{n}$3. 至少n位的数字:^\d{n,}$原创 2017-03-18 10:46:40 · 317 阅读 · 0 评论