- 博客(274)
- 资源 (2)
- 收藏
- 关注
原创 使用npm批量、快速删除没有用的fork-repos
1.获得一个github账号的token ,勾选public_repo,delete_repo选项2.安装npm包npm install --global remove-github-forks3.运行$ remove-github-forks token? Will delete: user/repo, user/repo2
2016-09-29 17:06:26
1884
转载 iOS使用自定义字体
转自 http://blog.youkuaiyun.com/heartofthesea/article/details/222893991.将准备好的字体文件加入项目中2.打开Build Phases—Copy Bundle Resources,确保刚添加的字体文件在列表中,否则需要手动加到这里3.编辑”项目名-Info.plist”文件(1)addRow—Fonts
2016-03-17 13:16:38
933
原创 MAC使用PC键盘
1.首先连上PC键盘,此时MAC会弹出对话框,按照要求确认键盘上shift左边和右边的值(一般为‘z’和‘/’)2.选择键盘类型,一般为ANSI,此时已经设置完成。但是这和平时使用的MAC键盘位置不对,MAC键盘是control、option/alt、command。PC键盘一般是control、win、alt。其中的win键就是MAC的command键,如果将win键
2015-11-06 20:08:21
6451
1
原创 Reveal简单使用
下载地址http://revealapp.com集成到项目中点击iOS Library,将Reveal.framework加入工程。在工程设置中,在Other Linker Flags项增加-ObjC -framework Reveal运行模拟器或真机后,用reveal连上模拟器或真机。
2015-11-06 15:07:51
803
转载 ReactiveCocoa的常见用法和常用宏
原文常见用法 // 1.代替代理 // 需求:自定义redView,监听红色view中按钮点击 // 之前都是需要通过代理监听,给红色View添加一个代理属性,点击按钮的时候,通知代理做事情 // rac_signalForSelector:把调用某个对象的方法的信息转换成信号,就要调用这个方法,就会发送信号。 // 这里表示只
2015-10-31 15:05:24
2025
转载 GCD使用经验与技巧浅谈
前言GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。dispatch_once_t必须是全局或static变量这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下:
2015-08-11 14:33:48
756
原创 App Transport Security has blocked a cleartext HTTP 解决办法
原因:在iOS9 beta中,苹果将原http协议改成了https协议,使用 TLS1.2 SSL加密请求数据。解决办法:在info.plist 加入keyNSAppTransportSecurityNSAllowsArbitraryLoads
2015-08-09 14:30:34
1043
原创 swift实现单例模式
单例模式单例模式有三个要点:1.只有一个实例2.构造函数要私有3.构造过程线程安全实现class MyClass { static let sharedInstance = MyClass() var title = "" private init() { }}swift的static构造过程中使用了dispatch_onc
2015-08-08 19:32:01
750
转载 Grand Central Dispatch 基础教程:Part 2/2
欢迎来到Grand Central Dispatch系列教程的第二部分!在教程的第一部分,你学到了一些关于并发,线程及GCD工作原理的知识。你通过并用dispatch_barrier_async与dispatch_sync保证了PhotoManager单例在读取与写入照片过程中的线性安全性。值得一提的是,你不仅通过dispatch_after及时地向用户发出提醒以此优化了App的UX而且还
2015-08-08 18:09:05
624
转载 Grand Central Dispatch 基础教程:Part 1/2
尽管Grand Central Dispatch(以下简称为GCD)已推出一段时间了,但并不是所有人都明白其原理;当然这是可以理解的,毕竟程序的并发机制很繁琐,而且基于C的GCD的API对于Swift的新世界并不是特别友好。在接下来的两节教程中,你将学习GCD的输入 (in)与输出 (out)。第一节将解释什么是GCD并了解几个GCD的基础函数。在第二节,你将学习几个更加进阶的GCD函数。
2015-08-08 18:07:13
661
原创 swift2 泛型
泛型函数func swapTwoValues(inout a: T, inout b: T) { let temporaryA = a a = b b = temporaryA}var someInt = 3var anotherInt = 107swapTwoValues(&someInt, b: &anotherInt)print(someInt)
2015-08-01 21:32:54
622
原创 swift2 运算符函数
运算符函数struct Vector2D { var x = 0.0, y = 0.0}func + (left: Vector2D, right: Vector2D) -> Vector2D { return Vector2D(x: left.x + right.x, y: left.y + right.y)}let vector = Vector2D(x:
2015-07-28 21:16:15
709
原创 swift2 析构过程
Swift 会自动释放不再需要的实例以释放资源。Swift 通过自动引用计数(ARC)处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前关闭该文件。在类的定义中,每个类最多只能有一个析构函数。析构函数不带任何参数,在写法上
2015-07-27 11:47:04
659
原创 swift2 构造过程
存储属性的初始赋值类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态。你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值。注:当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器构造器struct Fahrenheit {
2015-07-27 11:35:30
689
原创 手势识别的简单使用
UISwipeGestureRecognizerimport UIKitclass ViewController: UIViewController { var swipeRecognizer: UISwipeGestureRecognizer! required init?(coder aDecoder: NSCoder) { super.init(c
2015-07-25 12:49:59
1598
原创 初探GCD
UI相关ui相关的任务需要使用主线程来运行。主线程只能异步执行,同步则会发生死锁。import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() dispatch_async(dispatc
2015-07-25 11:40:01
903
原创 swift2 扩展
扩展就是向一个已有的类、结构体或枚举类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力。Swift 中的扩展可以:1.添加计算型属性和计算静态属性2.定义实例方法和类型方法3.提供新的构造器4.定义下标5.定义和使用新的嵌套类型6.使一个已有类型符合某个协议计算型属性extension Double { va
2015-07-24 22:11:30
616
原创 UICollectionView的简单使用
显示简单的UICollectionViewimport UIKitclass ViewController: UICollectionViewController { let allSectionColors = [ UIColor.redColor(), UIColor.greenColor(), UIColor.blueColor()]
2015-07-24 12:23:25
972
原创 UITableView的简单使用
显示简单的UITableViewimport UIKitclass ViewController: UIViewController, UITableViewDataSource { var tableView: UITableView? override func viewDidLoad() { super.viewDidLoad() tabl
2015-07-24 11:33:45
907
原创 UISegmentedControl和UIPickerView
UISegmentedControl显示简单的UISegmentedControlimport UIKitclass ViewController: UIViewController { var segmentedControl:UISegmentedControl! override func viewDidLoad() { super.vie
2015-07-24 10:11:53
702
原创 UIActivityViewController
实现简单的分享功能import UIKitclass ViewController: UIViewController, UITextFieldDelegate { var textField:UITextField! var buttonShare:UIButton! var activityViewController:UIActivityViewContro
2015-07-24 09:33:15
626
原创 UIProgressView和UISlider
UIProgressView显示一个UIProgressViewimport UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let progres
2015-07-24 09:06:41
1556
原创 UITextField和UITextView
基本功能import UIKitclass ViewController: UIViewController { var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() textField = UITextField(frame: CGR
2015-07-23 22:15:19
672
原创 UISwitch和UIDatePicker
UISwitch基本使用import UIKitclass ViewController: UIViewController { var mainSwitch:UISwitch! func switchIsChanged(sender: UISwitch){ print("Sender is = \(sender)") if
2015-07-23 20:03:59
729
原创 UIWebView和WebKit
loadHTMLStringimport UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let webView = UIWebView(frame: view.bounds) let htmlString
2015-07-23 18:23:11
1324
原创 几种常用的UIViewContentMode
.ScaleToFill会变形使得填充所有空间,效果如下:import UIKitclass ViewController: UIViewController { let image = UIImage(named: "Safari") var imageView: UIImageView! override func viewDidLoad() {
2015-07-23 12:39:44
846
原创 添加简单的模糊效果
定义你想添加的模糊效果,选择类型let blurEffect = UIBlurEffect(style: .Light)以此模糊类型创建子viewlet blurView = UIVisualEffectView(effect: blurEffect)确定子view的位置和大小blurView.frame.size = CGSize(width: 200, h
2015-07-23 11:08:50
626
原创 安装Alcatraz插件管理
终端中执行curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh安装后显示如下:重启Xcode,点击Package Manager可以自由的管理xcode插件了。
2015-07-22 16:19:45
668
原创 swift2 类型转换
class MediaItem { var name: String init(name: String) { self.name = name }}class Movie: MediaItem { var director: String init(name: String, director: String) { se
2015-07-21 21:17:55
648
原创 swift2 自动引用计数
原理class Person { let name: String init(name: String) { self.name = name print("\(name) is being initialized") } deinit { print("\(name) is being deinitial
2015-07-21 20:39:02
501
原创 swift2 继承
定义基类class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \(currentSpeed) miles per hour" } func makeNoise() { // 什么也不做-因为车辆不一定会有噪
2015-07-19 15:13:45
591
原创 swift2 Subscripts
下标脚本语法subscript(index: Int) -> Int { get { // 返回与入参匹配的Int类型的值 } set(newValue) { // 执行赋值操作 }}实例如下:struct TimesTable { let multiplier: Int subscri
2015-07-19 14:53:15
510
原创 swift2 方法
实例方法class Counter { var count = 0 func increment() { count++ } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 }}
2015-07-19 13:28:53
644
原创 swift2 属性
存储属性struct FixedLengthRange { var firstValue: Int let length : Int}var rangeOfThreeItems = FixedLengthRange(firstValue: 0,length :3)// 该区间表示整数0,1,2rangeOfThreeItems.firstValue = 6//
2015-07-19 11:31:11
526
原创 LeetCode 231 Power of Two
题目分析题目要求为判断一个数是否为2的幂。一种基本的方法就是不断的对2取余直到该数变为1,如果所有的取余结果都为0,则为2的幂。比较简单的方法:2的幂用2进制表示只有一个1,比如16= 2^4 用2进制表示则为 10000,那么它减一则为 01111这两个数取按位与操作一定为0题解解
2015-07-18 23:06:28
591
原创 LeetCode 237 Delete Node in a Linked List
题目分析题目的意思很简单,给你一个链表,给你一个节点(不是尾结点)让你反悔除了这个节点之外的链表。题解起初我是这样想的,把下一个的值赋给当前的值,不断移动当前的位置,那么最后一个值就是不需要的。那么倒数第二个节点 node -> next = NULL; 即可/** * Definit
2015-07-18 22:31:47
610
原创 swift2 类和结构体
定义struct Resolution { var width = 0 var height = 0}class VideoMode { var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name: String?}let s
2015-07-18 22:07:07
678
原创 swift2 枚举类型
枚举语法enum CompassPoint { case North case South case East case West}var directionToHead = CompassPoint.WestdirectionToHead = .SouthdirectionToHead的类型被推断当它被CompassPoint的一个可能值初始
2015-07-18 21:35:33
652
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人