- 博客(28)
- 收藏
- 关注
转载 iOS之富文本
随着iOS6 API的发布,文字显示的API越来越完善,其中一个重要的更新是在UITextField,UITextView和UILabel中加入了对AttributedString的支持,实现行距控制,字距控制,段落控制等高级功能也不必再去使用深奥的CoreText框架。而iOS7的发布,苹果又引入了TextKit,TextKit是一个快速而又现代化的文字排版和渲染引擎。
2015-10-29 01:17:53 551
转载 GCD 之线程死锁问题
GCD 之线程死锁转自:http://www.cnblogs.com/tangbinblog/p/4133481.htmlGCD 确实好用 ,很强大,相比NSOpretion 无法提供 取消任务的功能。如此强大的工具用不好可能会出现线程死锁。 如下代码:- (void)viewDidLoad{ [super viewDidLoad];
2015-10-25 16:19:21 536 1
原创 iOS开发中常用的第三方插件和框架小结
一:插件1.图片补全插件:比如说你只有@3x的图片想要@2x的图片又不想麻烦美工妹妹,即可使用此神器:https://github.com/rickytan/RTImageAssets2.不解释cocoapods第三方框架快速集成插件,开发必备:https://github.com/kattrali/cocoapods-xcode-plugin二:框架
2015-10-20 21:09:21 657
原创 关于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 631
原创 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 2916
原创 Swift中的打印日志的配置
Swift中的打印日志的配置/** * 定义日志打印输出方法 * * message: 具体的输出内容 * file: 项目名称 * method: 方法名称 * line: 第几行代码 */func LSLLog(message: T, file: String = __FILE__, method: String = __FUNCTION__, line
2015-10-20 01:49:40 930
原创 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 763
原创 Swift基础篇——析构方法
析构方法import Foundation/*析构方法对象的内存被回收前夕被隐式调用的方法, 对应OC的dealloc方法主要执行一些额外操作, 例如释放一些持有资源, 关闭文件, 断开网络等*/class FileHandler{ var fd: Int32? // 文件描述符 // 指定构造器 init(path:String){ /
2015-10-20 01:33:33 417
原创 Swift基础篇——内外函数
内外函数import Foundation/*内部函数: 默认情况下的参数都是内部参数外部函数: 如果有多个参数的情况, 调用者并不知道每个参数的含义, 只能通过查看头文件的形式理解参数的含义 那么能不能和OC一样让调用者直观的知道参数的含义呢? 使用外部参数 外部参数只能外部用, 函数内部不能使用, 函数内部只能使用内部参数*/func divis
2015-10-20 01:30:26 619
原创 Swift基础篇——内存相关
内存相关import Foundation/*Swift内存管理:管理引用类型的内存, 不会管理值类型, 值类型不需要管理内存管理原则: 当没有任何强引用指向对象, 系统会自动销毁对象(默认情况下所有的引用都是强引用)如果做到该原则: ARC*/class Person { var name:String init(name:String){
2015-10-20 01:27:44 443
原创 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 387
原创 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 368
原创 Swift基础篇——结构体
结构体import Foundation/*结构体:结构体是用于封装不同或相同类型的数据的, Swift中的结构体是一类类型, 可以定义属性和方法(甚至构造方法和析构方法等)格式:struct 结构体名称 { 结构体属性和方法}*/struct Rect { var width:Double = 0.0 var height:Double = 0.0
2015-10-20 01:20:14 454
原创 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 326
原创 Swift基础篇——懒加载
懒加载import UIKitclass ViewController: UIViewController { // 只有外界访问到listData的时候才会去执行闭包, 然后将闭包的返回值赋值给listData // 注意: 一定要记住闭包后面需要写上(), 代表执行闭包 lazy var listData: [String]? = { ()->[
2015-10-20 01:15:04 356
原创 Swift基础篇——闭包
闭包import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() /* OC: block类似于匿名函数, 用于封装代码块, 在特定的时候执行, 执行一些耗时操作
2015-10-20 01:12:51 350
原创 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 590
原创 Swift基础篇——构造函数
构造函数import Foundation/** Swift中要求在创建一个类时必须给这个类中所有的属性进行初始化 如果不能在创建对象时给这个类中所有的属性进行初始化, 那么这些属性必须是可选的 如果已经在构造方法中对所有的属性进行了初始化, 那么这些属性就可以不是可选类型 在给某一个类指定属性的数据类型时, 如果该属性是对象类型, 那么可以指定为可选类型
2015-10-20 01:04:58 442
原创 Swift基础篇——函数
函数import UIKit/*:函数* 格式func 函数名称(形参列表) ->返回值类型{代码}* Void == ()*/// 1.没有参数没有返回值func say() -> Void{ print("hello")}say()// 如果没有返回值可以简写func say1() -> (){ print("hello")}s
2015-10-20 01:00:54 379
原创 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 381
原创 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 427
原创 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 326
原创 Swift基础篇——循环
import UIKit/*:传统for* 基本用法和OC一致* for后面的()可以省略* for后面的{}不可用省略* Swift开发中不建议使用传统for循环* for后面的三个参数都可以省略,如果省略循环保持语句, 那么默认为真*/forvar i = 0; i <10; i++{
2015-10-20 00:53:16 348
原创 Swift基础篇——可选类型
可选类型import UIKitvar str = "Hello, playground"// 可选类型/*:可选类型* 什么是可选类型: 一个变量可以有值也可以没有值, 我们就称之为可选类型* 在Swift中如果使用一个可选类型的变量/常量, 必须解包操作* 解包: 只需要在变量/常量后面加上 !* !含义: 代表告诉系统该变量/常量中一定有值, 如果强制解包一个没有值的
2015-10-20 00:51:24 387
原创 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 372
原创 Swift基础篇——元祖
元祖import UIKit// 元祖/*:元祖* 复合数据类型* 只要将多个相同或者不同的数据用()括起来就是元祖* 优点: 在以前没有元祖之前C和OC语言是通过传入指针或者返回结构体的方式来返回多个值的, 而有了元祖之后就可以实现让一个函数返回多个值*/let student = ("hello", 99, 99.8)print(student)print(stude
2015-10-20 00:46:01 629
原创 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 399
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人