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