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