- 博客(29)
- 收藏
- 关注
转载 关于iOS10的适配问题
很久没写博客了,现在不是很忙,总结一下iOS10的一些适配相关的问题: 1.证书问题 打开xcode8.0时编译运行时出现下面问题: 这就是证书的问题,正常情况下,会在BuildSettings里面设置证书 但是在xcode8.0中我们看到下面的新特性: 为了方便用户来管理,大家可以选择Automatically manage signing。
2016-10-13 14:58:42
1642
原创 多线程
NSThread的优点:叫其他更轻量级。缺点:需要自己管理线程的声明周期和线程同步,线程同步同步锁也会导致系统的一些开销 NSOperation:不需要关心线程的声明周期,和线程同步的问题。NSOperation是一个抽象类,它不能直接使用,需要使用它的子类,子类有NSInvocationOperation和NSBlockOperation,把子类对象放到NSOperationQueue队列中执
2016-04-16 17:34:56
376
原创 RunLoop
RunLoop是一种让线程随时处理事件而不退出的机制。RunLoop实际上是一个对象管理了其需要处理的事件和消息。RunLoop让线程在需要处理事件的时候被唤醒,不需要处理事件的时候休眠,节省资源。它是一个监听事件的换,将事件分配到各个目标进行处理。 OSX/IOS提供了两个这样的对象,NSRunLoop和CFRunLoopRef,CFRunLoopRef是在coreFundation框架
2016-04-16 17:21:14
359
原创 app闪退
1、如何跟踪app的崩溃率和线上闪退? iOSapp闪退时系统会生成一个crash日志,保存在设备上。crash日志里面有很多有用的信息,比如对内存堆栈信息和内存映像,通过解析这些信息来解析出crash时的代码逻辑。 crash一般有两种原因:违反iOS系统的规则导致crash和代码逻辑BUG导致crash (1)内存报警到crash 当iOS系统内存吃紧的时候,它的VM会发出内存警告,尝
2016-04-16 15:19:03
1521
原创 在category和protocol中如何实现@property
在category和protocol中使用@property都只能生成setter和getter方法的声明,不能实现,如果想要在category中实现setter,getter方法可以调用运行时的两个方法: objc_setAssociatedObject objc_getAssociatedObject
2016-04-16 14:00:31
411
原创 远程推送的基本过程
1、客户端app需要将用户的UDID和应用程序的bundleID发送给APNS服务器进行注册,APNS服务器将加密后的device Token发送给客户端 2、app获取到device Token后上传给自己的服务器 3、当需要发送推送通知时,公司服务器将device Token和需要推送的内容发送给苹果的APNS服务器 4、APNS再将相应的内容发送到客户端上 远程推送需要创建证书,创建
2016-04-16 13:55:26
355
原创 支付宝SDK的应用
完成一次完整的支付大致需要以下步骤:向支付申请,与支付宝签约获得商户ID(partner)和账户ID(seller)和私钥(primarykey),下载支付宝SDK,生成订单信息,签名加密调用支付宝客户端,由支付宝客户端与支付宝安全服务器打交道,支付完毕后,回到原来的程序,在原来的应用程序显示结果。 问题: 集成SDK编译时找不到openssl/asn1.h 解决方案:Build Setti
2016-04-16 13:36:18
727
原创 AutoLayout
AutoLayout AutoLayout 传统的是采用设置frame的布局方式的思维开发界面,但是随着苹果设备屏幕尺寸的碎片化,这种方式逐渐被摒弃,在大多数情况下,比如页面支持屏幕旋转的话,这种设定frame的方式就会完全失效。很多人习惯在ViewDidload里面初始化控件,但是viewController要在viewWillLoyoutSubviews的时候才真正地确定view和
2016-03-01 20:02:58
389
原创 Swift继承
注意:Swift 中的类并不是从一个通用的基类继承而来。如果你不为你定义的类指定一个超类的话,这个类就自动成为基类。 注意:不像 Objective-C,在 Swift 中,初始化器默认是不继承的,见初始化器的继承与重写 注意:子类只允许修改从超类继承来的变量属性,而不能修改继承来的常量属性。 一个类的实例方法会被这个类的所有子类继 承。 重写(Overrid
2016-01-30 01:15:34
376
原创 Swift方法
类、结构体、枚举都可以定义实例方法和类方法 Swift默认仅给方法的第一个参数名称一个局部参数名称;迷人同时给第二个和后续参数名称局部参数名称和外部参数名称。 class Counter { var count: Int = 0 func incrementBy(amount: Int, numberOfTimes: Int) { count += amount * n
2016-01-30 00:34:30
360
原创 Swift类和结构体
与其他编程语言不同,Swift并不要求你为自定义的类和结构体去创建独立的接口和实现文件。你所要做的是再一个单一的文件中定义一个类或者结构体,系统将会自动生成面向其他代码的外部接口。 类和结构体的对比 共同点: 定义属性用于存储值 定义方法用于提供功能 定义下标用于通过下标语法访问值 定义初始化器用于初始化值 通过扩展以增加实现的功能 符合协议对某类提供标准的功能 类还具有下面附加
2016-01-29 23:55:43
479
原创 Swift枚举
在Swift中枚举类型是一等类型,它采用了很多传统上只被类所支持的特征。 例如1、计算型属性(computed properties),用于提供关于枚举当前值的附加信息。 2、实例方法(instance methods)用于提供和枚举所代表的值相关联的功能。 3、构造器来提供一个出事成员值 4、遵守协议(protocols)提供标准的功能 5、扩展。 枚举的定义 eg enu
2016-01-28 20:04:22
443
原创 Swift闭包
闭包是功能性自包含模块,可以在代码中被传递和使用。Swift中的闭包和oc和c中的blocks块一样 闭包可以捕获和存储其所在上下文中任意常量和变量的引用。这就是所谓的闭合并包裹着这些常量和变量,俗称闭包。Swift会为你管理在捕获过程中涉及的内存操作 闭包采用下列三种形式之一: 1、全局函数是一个有名字但是不会捕获任何值得闭包 2、嵌套函数是一个有名字并且可以捕获其封闭函数内的值的闭包
2016-01-28 18:59:40
346
原创 Swift函数
外部形参名 func join(string s1:String,toString s2:String,withString withJoiner:Strinhg){} join(string: "hello", toString: "world", withJoiner: ", ") 外部形参名与本地形参用空格隔开。外部形参使你的参数的用途更加明确。在调用函数的时候也,如果
2016-01-28 16:11:30
432
原创 Swift控制流
如果你不需要知道范围内每一项的值,可以使用_来替换变量名来忽略对值的访问 for _ in 1...p{} for var i = 0;i 每一个case语句都必须执行至少一条语句 switch anotherCharacter { 3. case "a": 4. case "A": 5. println("The letter A") 6. default: 7. prin
2016-01-28 15:56:00
341
原创 Swift集合类型
Swift语言中的数组和字典中存储数据类型必须明确。 数组 数组存储相同类型的数据,相同的值可以多次出现在一个数组的不同的位置。 不同于oc中的数组,Swift对存入数组中的数据是有要求的。在Swift中,数据值在被存进某个数组之前类型必须是明确的。 数组的简单语法 数组的形式: 1、Array 2、SomeType[] 3、var list:String[] = ["",""]
2016-01-28 15:54:58
354
原创 Swift字符和字符串
字符串和字符 字符串通过String类型来表示,也可以表示为Character类型值的集合 字符串的值,取决于其被定义为常量还是变量 注意:Swift的String类型与Foundation NSString类进行了无缝桥接。如果利用Cocoa或Cocoa Touch中的Foundation框架进行工作,整个NSString API都可以调用创建的String类型的值,除了它的特性。
2016-01-28 15:53:57
385
原创 Swift基础
变量和常量 Swift是一个类型安全的语言,可选就是一个很好的例子。如果你期望得到一个 String类型,类型就会阻止你传入一个其他类型的值 如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。 常量和变量名不能包含数学符号,箭头,保留(或者非法的)Unicode码位,连线与制表符。可以是任意字符包括中文 如果使用关键字作为常量或者变量的名称需
2016-01-28 15:53:14
487
原创 Swift泛型
在 1、func repeat(item:itemType,times:Int) ->itemType[]{ var result = itemType[]() for i in 0..times{ result += item } return result } enum OptionValue{ case None case Some(T) } var possible
2016-01-28 15:25:50
317
原创 Swift接口和扩展
protocol 接口名{} 类、枚举和结构体都可以实现接口 protocol ExampleProtocol{ var simpleDescription:String{get} } /* 结构体和枚举里面的方法可以是实例方法也可以是类方法,但是默认情况下,实例方法是不可以修改属性值,为了使实例方法可以修改属性值,在方法前面加mutating struct Point {
2016-01-28 15:24:51
693
原创 Swift枚举和结构体
枚举 使用enum来创建一个枚举,枚举可以包含方法 enum:Int{//表示枚举的类型都是Int类型的 } 使用toRow和fromRow在原始值和枚举值之间进行转换 枚举的成员值是实际值,不是原始值的另一种表达方法 引用枚举成员的两种方法: 给枚举常量赋值时可以1、枚举名.枚举成员 2、在switch(self){}中枚举成员使用.枚举成员来引用 结构体 结构体和类
2016-01-28 15:23:15
372
原创 Swift基本语法
var 声明变量 let 声明常量 var myVariable = 42 赋值的类型必须与初始化一样 let myVariable :Double = 0.1 let label = "like" let width = 94.5 let widthLabel = label + String(width) let sumStr = "Sum is \(myVariable + w
2016-01-28 15:21:41
315
原创 shareSDK
分享(shareSDK和友盟)第三方 shareSDK集成(分享) 方式1、Auth2.0授权协议 比如分享新浪微博: 1、通过Auth2.0授权协议进行授权,会拿到令牌 2、通过拿到的令牌去访问要调用的接口(比如分享接口) 弊端是:每次都需要拿到令牌,才能分享。令牌是一串编码,存储到本地,通过这个编码,访问。这个令牌有一个有效期,这个有效期一个就要从新获取 应用内部弹出一个
2015-12-30 16:32:35
530
原创 网络请求
检测网络状态 在项目中引入Reachability.h,Reachability.m文件 真机包名在bundle identifier 后面填写 选不了真机就在 general—Deployment info的Deployment Target中选择版本 请求网络: NSURLConnection //utf-8编码 stringByAddingPercentEscapesU
2015-12-30 16:28:49
795
原创 SDWebImage详解
SDWebImage这个类库提供了一个UIIMageView加载远程图片,具有缓存管理、异步下载、同意个URL下载次数控制和优化等功能。 SDWebImage支持图片异步下载+缓存 它提供了一个UIImageView+WebCache的Category. SDImageCache是怎样管理类存的? SDImageCache分为两部分,一个是内存层面,一个是硬盘层面。 内存层面相当于是
2015-12-28 17:14:46
643
原创 扫描
扫描 扫描原理:底层通过捕捉设备,捕捉到一个图形,将图形转换成一个链接地址,最终需要的时一个url,只要调openUrl就可以跳到对应的地址去。 ->ios7之后就自带扫描—AVFoundation框架灵敏度和内存使用都是最有的。 ->ios7之前 1>zbar,在扫描的灵敏度和内存的使用上角Zxing都是较优的,是github的开源库 2>Zxing,是goole code上的一个开源
2015-12-24 22:12:49
406
原创 多线程
一个任务通常就是一个程序,每个运行中的程序通常就是一个进程。也就是说所有运行中的任务通常对应一个进程。我们通常会感觉到cpu会同时执行多个任务,但是事实上每一时刻cpu只能执行一个任务。cpu通过时间片轮转等调度算法,快速地在各个进程之间进行切换,以至于在我们看来能同时并发执行多个任务。 线程NSThread是一个轻量级的进程,线程是进程的组成部分,一个进程可以拥有多个线程,线程在程序中是独立的
2015-12-22 23:13:58
336
原创 文件IO
NSBundle NSBundle使用单例模式,调用类方法+mainBundle,获取本地资源路径 常用方法: stringWithContentsOfile:encoding:error://从制定文件来初始化NSString fileURLWithPath://使用NSURL加载本地资源 requestWithURL URLWithString//加
2015-12-19 16:58:08
419
原创 ios常用设计模式详解
为什么要了解设计模式呢? 设计模式是前辈们通过多年的编程经历总结出来的经验,以便于更高效合理地组织代码,快捷方便地解决某一类问题。 1、单例设计模式 单例模式是使用比较普遍叫简单地一种设计模式,它的原理是:始终返回一个单例,节约资源。如果要求某个类只有一个实例,那么,单例模式是最好的解决方法。 在iOS SDK中,用到单例模式的类: 1、UIApplication的+shar
2015-12-17 10:32:37
527
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅