- 博客(59)
- 收藏
- 关注
原创 Cocoapods的最新安装流程
1.先升级Gem sudo gem update --system2.切换cocoapods的数据源 【先删除,再添加,查看】 gem sources --remove https://rubygems.org/ gem sources -a http://ruby.taobao.org/ gem sources -l3.安装cocoapods
2016-12-01 10:09:36
416
原创 iOS - 断言处理与调试
一、Objective-C 中的断言:Objective-C 中的断言处理使用的是 NSAssertionHandler :每个线程拥有它自己的断言处理器,它是 NSAssertionHandler 类的实例对象。当被调用时,一个断言处理器打印一条包含方法和类名(或者函数名)的错误信息。然后它抛出一个 NSInternalInconsistencyException 异常。
2015-12-08 22:28:21
808
转载 如何在UICollectionView reloadData后找到的某个cell
collection view 在reloadData之后,找不到 cell今天碰到的一个问题:app 主界面是一个 collection view,当数据源增加一个数据时,我需要立即刷新视图,并打开相应的 cell。于是我写了如下代码,123[self.collectionView reloadData];UICollectionVie
2015-12-08 22:12:52
2271
转载 UIView的bounds到底是干嘛的
view的三个相关属性UIView 的 frame 属性使用的很频繁,但是 bounds 这个属性却一直用的不多。最近的工作内容涉及 bounds 比较多,抽空研究了一下。先说结论,frame : 当前 view 在其 superView 中的位置及大小bounds : 是 view 自身的坐标系(为其 subViews 提供的坐标系)center : 该view的中心点在父vie
2015-12-08 22:08:11
716
原创 绘制像素到屏幕
像素是如何绘制到屏幕上面的?把数据输出到屏幕的方法有很多,通过调用很多不同的framework和不同的函数。这里我们讲一下这个过程背后的东西。希望能够帮助大家了解什么时候该使用什么API,特别是当遇到性能问题需要调试的时候。当然,我们这里主要讲iOS,但是事实上,很多东西也是可以应用到OSX上面的。Graphics Stack绘制屏幕的过程中又很多都是不被人了解的。但是一旦像素被绘
2015-12-08 21:54:17
995
原创 Git push的使用
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。1$ git push :注意,分支推送顺序的写法是:,所以git pull是:,而git push是:。如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果
2015-12-01 23:23:39
408
转载 UIView 中常见的方法总结
UIView 中常见的方法总结addSubview: 添加一个子视图到接收者并让它在最上面显示出来。 - (void)addSubview:(UIView *)view 讨论 这方法同样设置了接收者为下一个视图响应对象。接收者保留视图。如果你使用removeFromSuperview方法用来把视图移除他的显示列表,那么视图将会被释放。如果你想要在视图移除显示列表後保留并
2015-11-21 20:01:45
314
转载 iOS组件之UIScrollView详解
引言UIScrollView的是几个UIKit类包括的UITableView和UITextView中的超类。一个UIScrollView对象(或者,简单地说,一个滚动视图)的核心概念是,它是一个视图,其起源是可调过的内容视图。它剪辑的内容,它的框架,这通常(但不一定)恰逢该应用程序的主窗口。滚动视图跟踪手指的变动,并相应调整原点。这正显示出它的内容“,通过”滚动视图的视图绘制的基础
2015-11-21 17:04:51
427
转载 iOS之富文本
随着iOS6 API的发布,文字显示的API越来越完善,其中一个重要的更新是在UITextField,UITextView和UILabel中加入了对AttributedString的支持,实现行距控制,字距控制,段落控制等高级功能也不必再去使用深奥的CoreText框架。而iOS7的发布,苹果又引入了TextKit,TextKit是一个快速而又现代化的文字排版和渲染引擎。
2015-10-29 01:17:53
566
转载 GCD 之线程死锁问题
GCD 之线程死锁转自:http://www.cnblogs.com/tangbinblog/p/4133481.htmlGCD 确实好用 ,很强大,相比NSOpretion 无法提供 取消任务的功能。如此强大的工具用不好可能会出现线程死锁。 如下代码:- (void)viewDidLoad{ [super viewDidLoad];
2015-10-25 16:19:21
591
1
原创 iOS开发中常用的第三方插件和框架小结
一:插件1.图片补全插件:比如说你只有@3x的图片想要@2x的图片又不想麻烦美工妹妹,即可使用此神器:https://github.com/rickytan/RTImageAssets2.不解释cocoapods第三方框架快速集成插件,开发必备:https://github.com/kattrali/cocoapods-xcode-plugin二:框架
2015-10-20 21:09:21
698
原创 关于xcode6升xcode7之后多window时,程序的状态栏管理问题
关于xcode6升xcode7之后多window时,程序的状态栏管理问题在iOS6到iOS8时,我们设置app的状态栏样式,一般把info.plist里面设置了View controller- based status bar appearance为NO,默认为YES,来应用程序来管理。这样的话多window时,并不会有影响状态栏的样式,因为状态栏是由应用UIApplication来管
2015-10-20 13:40:53
651
原创 Swift 读取本地json文件时的异常捕获(try catch)的使用
Swift 读取本地json文件时的异常捕获(try catch)的使用// 1.获取文件路径 let path = NSBundle.mainBundle().pathForResource("xxx.json", ofType: nil)! // 2.根据文件创建 let data = NSData(contentsOfFile: path
2015-10-20 01:57:32
2961
原创 Swift中的打印日志的配置
Swift中的打印日志的配置/** * 定义日志打印输出方法 * * message: 具体的输出内容 * file: 项目名称 * method: 方法名称 * line: 第几行代码 */func LSLLog(message: T, file: String = __FILE__, method: String = __FUNCTION__, line
2015-10-20 01:49:40
993
原创 Swift2.0——构造方法的使用
构造方法的使用import Foundation/*继承与构造方法:指定构造与便利构造方法*/class Person { var name:String var age:Int // 指定构造方法都是以init开头的 init(name:String, age:Int) { self.name = name
2015-10-20 01:37:45
801
原创 Swift基础篇——析构方法
析构方法import Foundation/*析构方法对象的内存被回收前夕被隐式调用的方法, 对应OC的dealloc方法主要执行一些额外操作, 例如释放一些持有资源, 关闭文件, 断开网络等*/class FileHandler{ var fd: Int32? // 文件描述符 // 指定构造器 init(path:String){ /
2015-10-20 01:33:33
458
原创 Swift基础篇——内外函数
内外函数import Foundation/*内部函数: 默认情况下的参数都是内部参数外部函数: 如果有多个参数的情况, 调用者并不知道每个参数的含义, 只能通过查看头文件的形式理解参数的含义 那么能不能和OC一样让调用者直观的知道参数的含义呢? 使用外部参数 外部参数只能外部用, 函数内部不能使用, 函数内部只能使用内部参数*/func divis
2015-10-20 01:30:26
662
原创 Swift基础篇——内存相关
内存相关import Foundation/*Swift内存管理:管理引用类型的内存, 不会管理值类型, 值类型不需要管理内存管理原则: 当没有任何强引用指向对象, 系统会自动销毁对象(默认情况下所有的引用都是强引用)如果做到该原则: ARC*/class Person { var name:String init(name:String){
2015-10-20 01:27:44
500
原创 Swift基础篇——枚举
枚举import Foundation/*Swift枚举:Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增加属性和方法格式:enum Method{ case 枚举值}*/enum Method{// case Add// case Sub// case Mul// case Div
2015-10-20 01:25:09
419
原创 Swift基础篇——可选值
可选值import Foundation/*可选值: optionals有两种状态: 1.有值 2.没有值, 没有值就是nil*///有值:var optValue1: Int? = 9//没有值:var optValue2: Int?var optValue3: Int? = nil/*可选值可以利用if语句来进行判断*/var optValue4: Int?
2015-10-20 01:22:34
401
原创 Swift基础篇——结构体
结构体import Foundation/*结构体:结构体是用于封装不同或相同类型的数据的, Swift中的结构体是一类类型, 可以定义属性和方法(甚至构造方法和析构方法等)格式:struct 结构体名称 { 结构体属性和方法}*/struct Rect { var width:Double = 0.0 var height:Double = 0.0
2015-10-20 01:20:14
473
原创 Swift基础篇——单例
单例import Foundationclass NetWorkingTools:NSObject { // func == - // class func == + // 方法一: /* static var onceToken: dispatch_once_t = 0; static var _instance: Netw
2015-10-20 01:17:15
345
原创 Swift基础篇——懒加载
懒加载import UIKitclass ViewController: UIViewController { // 只有外界访问到listData的时候才会去执行闭包, 然后将闭包的返回值赋值给listData // 注意: 一定要记住闭包后面需要写上(), 代表执行闭包 lazy var listData: [String]? = { ()->[
2015-10-20 01:15:04
374
原创 Swift基础篇——闭包
闭包import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() /* OC: block类似于匿名函数, 用于封装代码块, 在特定的时候执行, 执行一些耗时操作
2015-10-20 01:12:51
363
原创 Swift基础篇——setter和getter的使用
setter和getterimport Foundationclass Student:NSObject {// MARK: - 不推荐使用直接写setter和getter这样的方法 /* var _name: String? var name: String? { set{ _name = newValue
2015-10-20 01:08:19
611
原创 Swift基础篇——构造函数
构造函数import Foundation/** Swift中要求在创建一个类时必须给这个类中所有的属性进行初始化 如果不能在创建对象时给这个类中所有的属性进行初始化, 那么这些属性必须是可选的 如果已经在构造方法中对所有的属性进行了初始化, 那么这些属性就可以不是可选类型 在给某一个类指定属性的数据类型时, 如果该属性是对象类型, 那么可以指定为可选类型
2015-10-20 01:04:58
459
原创 Swift基础篇——函数
函数import UIKit/*:函数* 格式func 函数名称(形参列表) ->返回值类型{代码}* Void == ()*/// 1.没有参数没有返回值func say() -> Void{ print("hello")}say()// 如果没有返回值可以简写func say1() -> (){ print("hello")}s
2015-10-20 01:00:54
402
原创 Swift基础篇——字符串
字符串import UIKit/*:字符:* OC: char charValue = 'a';*/var charValue1:Character = "a"/*:Swift和OC字符不一样* 1.Swift是用双引号* 2.Swift中的字符类型和OC中的也不一样, OC中的字符占一个字节,因为它只包含ASCII表中的字符, 而Swift中的字符除了可以存储ASC
2015-10-20 00:59:23
418
原创 Swift基础篇——字典
import UIKit/*:字典* 格式 var dict: Dictionary* 注意: 将OC的{}换成了[]* 可变和不可变 var/let*///var dict: Dictionary//var dict: [String: String]var dict = ["name": "Swift", "age": "99"]dict// 企业开发中字典使用得最
2015-10-20 00:57:52
446
原创 Swift基础篇——数组
数组/*:数组* 格式 var arr: Array / var arr: [Int]* 可变和不可变 var/let*/// 定义不可变数组...let arr99 = [99]// 定义可变数组//var arr: Array//var arr: [Int]//arr = [1, 2]var arr = [1, 2]// 1.遍历数组(取值)arr[0]f
2015-10-20 00:56:27
341
原创 Swift基础篇——循环
import UIKit/*:传统for* 基本用法和OC一致* for后面的()可以省略* for后面的{}不可用省略* Swift开发中不建议使用传统for循环* for后面的三个参数都可以省略,如果省略循环保持语句, 那么默认为真*/forvar i = 0; i <10; i++{
2015-10-20 00:53:16
362
原创 Swift基础篇——可选类型
可选类型import UIKitvar str = "Hello, playground"// 可选类型/*:可选类型* 什么是可选类型: 一个变量可以有值也可以没有值, 我们就称之为可选类型* 在Swift中如果使用一个可选类型的变量/常量, 必须解包操作* 解包: 只需要在变量/常量后面加上 !* !含义: 代表告诉系统该变量/常量中一定有值, 如果强制解包一个没有值的
2015-10-20 00:51:24
405
原创 Swift基础篇——分支
分支import UIKit// if/*:if* 大部分用于和OC中一致* Swif中条件语句可以不用写()* OC中如果if后面只有一条语句, 那么{}可以省略, 但是Swift不行* OC中条件语句可以是任何数值, OC中非0即真, YES/NO* Swift中条件语句的取值必须是Bool类型, 也就是说Swift中提供了真正的Bool类型, true/false*/
2015-10-20 00:49:18
386
原创 Swift基础篇——元祖
元祖import UIKit// 元祖/*:元祖* 复合数据类型* 只要将多个相同或者不同的数据用()括起来就是元祖* 优点: 在以前没有元祖之前C和OC语言是通过传入指针或者返回结构体的方式来返回多个值的, 而有了元祖之后就可以实现让一个函数返回多个值*/let student = ("hello", 99, 99.8)print(student)print(stude
2015-10-20 00:46:01
648
原创 Swift基础篇——常量和变量
/*:创建对象* OC: [[UIView alloc] init] [[UIView alloc] initWithFrame:]* Swift: UIView() UIView(frame: )* 从OC转换为Swift的规律: alloc initXXX --> (xxxx:)分号* 在OC中每一条语句后面必须跟上一个;“, Swift中如
2015-10-20 00:43:16
423
原创 地图的使用
地图的基本使用设置地图类型// 1.设置地图显示类型 // MKMapTypeStandard = 0, // 标准地图 // MKMapTypeSatellite, // 卫星云图 // MKMapTypeHybrid, // 混合(在卫星云图上加了标准地图的覆盖层) // MKMapTypeSatelliteFlyover NS_ENUM_A
2015-09-24 20:08:38
481
原创 浅谈——适配所有IOS版本的反地理编码的代理转block封装
浅谈——适配大部分IOS版本的反地理编码的代理转block封装(包括ios8.0之前、ios8.0之后到ios9.0之前和ios9.0之后)。。。。。。
2015-09-24 00:22:08
670
原创 浅谈——定位的使用
应用场景导航电商APP,获取用户所在城市数据采集用户信息(例如:统计app的使用分布)查找周边(周边好友,周边商家等等)定位的省电模式不需要获取用户位置时,一定要光比定位服务如果能够满足项目需求,极可能的使用“监听显著位置变化”定位服务(打车app)如果可以,尽可能使用低精度的desiredAccuracy如果是数据采集(一般都是周期性的去轮询用户位置),在轮询周期间一定要
2015-09-24 00:11:41
446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人