自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (2)
  • 收藏
  • 关注

转载 Objective-C Runtime基本概念(一)

Objective-C Runtime 是开源的Objective-C 是开源的,任何时候你都能从 http://opensource.apple.com. 获取。事实上查看 Objective-C 源码是我理解它是如何工作的第一种方式,在这个问题上要比读苹果的文档要好。你可以下载适合 Mac OS X 10.6.2 的 objc4-437.1.tar.gz。动态 vs

2016-05-31 14:55:04 302

原创 NSTimer导致误差的原因

//NSTimer导致误差的原因: /* 1、NSTimer加在main runloop中,模式是NSDefaultRunLoopMode,main负责所有主线程事件,例如UI界面的操作,复杂的运算,这样在同一个runloop中timer就会产生阻塞。 2、模式的改变。主线程的 RunLoop 里有两个预置的 Mode:kCFRunLoopDefa

2016-05-30 15:14:04 1021

原创 Xcode 7.3 自定义类无法自动联想的解决办法

点击顶部工程名 --> 左侧Target --> BuildSettings --> Apple LLVM 7.1 -Language-Objective C 下面的 Weak References in Manual Retain Release 设置为YES. 然后common+B编译运行一下就可以了

2016-05-30 14:34:52 769

原创 Swift - 属性观察者(willSet与didSet)

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"/* 属性观察者,类似于触发器。用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应。有如下特点: 1,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发will

2016-05-27 15:19:08 481

原创 Swift - 类初始化和反初始化方法

//: Playground - noun: a place where people can playimport UIKit//init():类的初始化方法(构造方法)//使用默认构造函数class Student { //类属性 var name: String = "" ; var number: Int = 0 ; }va

2016-05-27 15:03:14 922

原创 UIWebView加载本地html

初始化控件UIWebView第一步:在文件目录NSString *path = [[NSBundlemainBundle] pathForResource:@"main"ofType:@"html"];方式一:从html文件中读取html字符串NSFileHandle *readHandle = [NSFileHandle fileHandleForRead

2016-05-27 14:41:45 300

原创 iOS9 HTTP 不能正常使用的解决办法

Google后查证,iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)新特性要求App内访问的网络必须使用HTTPS协议。但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。最终找到以下解决办法:1.在Info.plist

2016-05-27 13:55:25 275

原创 React Native iOS环境搭建

1. 安装Homebrew Homebrew主要用于安装后面需要安装的watchman、flow 打开MAC的终端,输入如下命令: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2. 安装nvm和nodejs nvm是用于nodejs版本

2016-05-26 14:21:06 537

原创 ReactiveCocoa之RAC内存管理(十二)

在一开始接触RAC的时候,我们知道RAC对于block都是copy赋值的。@implementation RACSignal#pragma mark Lifecycle+ (RACSignal *)createSignal:(RACDisposable * (^)(id subscriber))didSubscribe { return [RACDynamicSignal

2016-05-23 17:09:13 3295

原创 ReactiveCocoa之核心方法bind的使用(十一)

1.1 ReactiveCocoa操作思想运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序编程接口:方法)执行结果的技术.Hook用处:截获API调用的技术。Hook原理:在每次调用一个API返回结果之前,先执行你自己的方法,改变结果的输出。1.2 ReactiveCocoa核心方法bindReactiveCocoa操作的核心方法是bind(绑定),

2016-05-23 16:24:58 1222

原创 ReactiveCocoa之RAC常用宏(十)

/** * RAC有许多强大而方便的宏。 */- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self testAndtest2]; }/** *RAC宏 */

2016-05-23 11:53:49 3189

原创 ReactiveCocoa之RAC合并(九)

@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *accountField;@property (weak, nonatomic) IBOutlet UITextField *pwdField;@property (weak, nonatomic) IBOutlet UIButton *

2016-05-23 11:51:58 7354

原创 ReactiveCocoa之RAC过滤(八)

// 跳跃 : 如下,skip传入2 跳过前面两个值// 实际用处: 在实际开发中比如 后台返回的数据前面几个没用,我们想跳跃过去,便可以用skip- (void)skip { RACSubject *subject = [RACSubject subject]; [[subject skip:2] subscribeNext:^(id x) { NSLog(@

2016-05-23 11:49:47 4949

原创 ReactiveCocoa之RAC映射(七)

- (void)map { // Map使用步骤: // 1.传入一个block,类型是返回对象,参数是value // 2.value就是源信号的内容,直接拿到源信号的内容做处理 // 3.把处理好的内容,直接返回就好了,不用包装成信号,返回的值,就是映射的值。 // Map底层实现: // 0.Map底层其实是调用flatte

2016-05-23 11:47:07 773

原创 ReactiveCocoa之RACMulticastConnection使用(六)

1.RACMulticastConnection:用于当一个信号,被多次订阅时,为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以使用这个类处理。2.使用注意:RACMulticastConnection通过RACSignal的-publish或者-muticast:方法创建.     RACMulticastConnection使用步骤:    

2016-05-23 11:37:16 1436

原创 ReactiveCocoa之RACCommand使用(五)

1.RACCommand:RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,他可以很方便的监控事件的执行过程。2.使用场景:监听按钮点击,网络请求RACCommand的简单使用     一、RACCommand使用步骤:     1.创建命令 initWithSignalBlock:(RACSignal * (^)(id input))

2016-05-23 11:31:11 3029

原创 ReactiveCocoa之RACSubject用法(四)

1.RACSubject:RACSubject:信号提供者,自己可以充当信号,又能发送信号。2.使用场景:通常用来代替代理,有了它,就不必要定义代理了。需求:1.给当前控制器添加一个按钮,push到另一个控制器界面2.另一个控制器view中有个按钮,点击按钮,返回控制器的第一个页面和接收到第二个界面的消息第一个界面:- (void)viewDidLoad { [

2016-05-23 11:19:09 5067

原创 ReactiveCocoa之RACSignal核心类的使用(三)

RACSignal使用步骤:  1.创建信号 + (RACSignal *)createSignal:(RACDisposable * (^)(id subscriber))didSubscribe  2.订阅信号,才会激活信号. - (RACDisposable *)subscribeNext:(void (^)(id x))nextBlock  3.发送信号 - (void)s

2016-05-23 11:12:33 2628

原创 ReactiveCocoa之常见用法(二)

ReactiveCocoa开发中常见用法。  代替代理: rac_signalForSelector:用于替代代理。  代替KVO : rac_valuesAndChangesForKeyPath:用于监听某个对象的属性改变。  监听事件: rac_signalForControlEvents:用于监听某个事件。  代替通知: rac_addObse

2016-05-23 11:01:40 2813 2

原创 ReactiveCocoa之简介(一)

1.ReactiveCocoa简介1.ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。2.ReactiveCocoa作用在我们iOS开发过程中,经常会响应某些事件来处理某些业务逻辑,例如按钮的点击,上下拉刷新,网络请求,属性的变化(通过KV

2016-05-23 09:51:02 1608

转载 BP神经网络原理

BP神经网络原理2.1 基本BP算法公式推导基本BP算法包括两个方面:信号的前向传播和误差的反向传播。即计算实际输出时按从输入到输出的方向进行,而权值和阈值的修正从输出到输入的方向进行。

2016-05-20 16:21:56 16146 2

原创 Swift-Swift - 访问控制(private,internal,public)

在Swift语言中,访问修饰符有三种,分别为private,internal和public。同时,Swift对于访问权限的控制,不是基于类的,而是基于文件的。其区别如下:1,privateprivate访问级别所修饰的属性或者方法只能在当前的Swift源文件里可以访问。2,internal(默认访问级别,internal修饰符可写可不写)internal访问级别所修饰的

2016-05-20 10:48:06 422

原创 Swift-协议

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//协议的语法//协议的定义方式与类,结构体,枚举的定义非常相似。protocol FirstProtocol { // 协议内容}protocol AnotherPr

2016-05-20 10:27:29 423

原创 Swift-扩展

扩展就是向一个已有的类、结构体、枚举类型或者协议类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)类似。(不过与 Objective-C 不同的是,Swift 的扩展没有名字。)Swift 中的扩展可以:添加计算型属性和计算型静态属性定义实例方法和类型方法提供

2016-05-20 10:26:51 237

原创 Swift-类型转换

类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。类型转换在 Swift 中使用 is 和 as 操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。你也可以用它来检查一个类是否实现了某个协议,就像在 检验协议的一致性部分讲述的一样。定义一个类层次作为例子你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例

2016-05-20 10:25:53 359

原创 Swift-错误处理

错误处理是响应错误以及从错误中返回的过程。swift提供第一类错误支持,包括在运行时抛出,捕获,传送和控制可回收错误。一些函数和方法不能总保证能够执行所有代码或产生有用的输出。可空类型用来表示值可能为空,但是当函数执行失败的事后,可空通常可以用来确定执行失败的原因,因此代码可以正确地响应失败。在Swift中,这叫做抛出函数或者抛出方法。举个例子,考虑到一个从磁盘上的一个文件读取以及处理数据

2016-05-20 10:25:02 548

原创 Swift-过滤器

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//Swift 提供了很多方便的函数来操作数组,比如 filter 和 map。在这篇文章里,我将带大家熟悉一下 filter,以及学习如何使用 map 来组合出新的数组。//假设你有一个数组,接着

2016-05-20 10:23:45 319

原创 Swift-条件语句

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//For 循环/* Swift 提供两种for循环形式以来按照指定的次数多次执行一系列语句: for-in循环对一个集合里面的每个元素执行一系列语句。 for循环,用来重复执行一系列语句直

2016-05-20 10:22:35 247

原创 Swift-可空链式调用

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"/* 可空链式调用(Optional Chaining)是一种可以请求和调用属性、方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil)。如果可空的目标有值,那么调用就会成功;如果选

2016-05-20 10:21:50 495

原创 Swift-自动引用计数

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"/* Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。通常情况下,Swift 的内存管理机制会一直起着作用,你无须自己来考虑内存的管理。ARC 会在类的实例不再被使用时,自

2016-05-20 10:20:26 408

原创 Swift-析构过程

析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示,类似于构造器要用init来标示。析构过程原理Swift 会自动释放不再需要的实例以释放资源。如自动引用计数章节中所讲述,Swift 通过自动引用计数(ARC)处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果创

2016-05-20 10:19:37 203

原创 Swift-构造过程

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//存储型属性的初始赋值/* 类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态。 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设

2016-05-20 10:18:08 232

原创 Swift-继承

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"class MyClass { }/* 注意: Swift 中的类并不是从一个通用的基类继承而来。如果你不为你定义的类指定一个超类的话,这个类就自动成为基类。 */class Veh

2016-05-20 10:17:16 175

原创 Swift-下标脚本

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//下标脚本语法/* 下标脚本允许你通过在实例后面的方括号中传入一个或者多个的索引值来对实例进行访问和赋值。语法类似于实例方法和计算型属性的混合。与定义实例方法类似,定义下标脚本使用subscrip

2016-05-20 10:16:33 263

原创 Swift-方法

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//存储属性struct FixedLengthRange { var firstValue:Int let lenght:Int?}//常量结构体的存储属性var

2016-05-20 10:15:37 329

原创 Swift-属性

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//存储属性struct FixedLengthRange { var firstValue:Int let lenght:Int?}//常量结构体的存储属性var

2016-05-20 10:14:52 219

原创 Swift-类和结构体

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口/* 注意:

2016-05-20 10:13:59 166

原创 Swift-枚举

//: Playground - noun: a place where people can playimport UIKitvar str = "枚举"//枚举语法//使用enum关键词来创建枚举并且把它们的整个定义放在一对大括号内:enum SomeEnumeration{ // enumeration definition goes here}//以下

2016-05-20 10:13:17 204

原创 Swift-闭包

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"/* 在函数 章节中介绍的全局和嵌套函数实际上也是特殊的闭包,闭包采取如下三种形式之一: 全局函数是一个有名字但不会捕获任何值的闭包 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 闭包

2016-05-20 10:12:38 199

原创 Swift-函数

//: Playground - noun: a place where people can playimport UIKitvar str = "Hello, playground"//函数的定义与调用/* 下面例子中的函数叫做"sayHello(_:)",之所以叫这个名字,是因为这个函数用一个人的名字当做输入,并返回给这个人的问候语。为了完成这个任务,你定义一个输入参数-一

2016-05-20 10:11:59 196

APS计划与排产原理

1、APS的主要特征是什么? 2、APS是如何缩短交期?如何预防订单的延迟? 3、APS和MRP的主要区别? 4、APS和精益、MES、 TOC的主要区别? 5、APS计算的三步法? 6、为什么需要正排法? 7、 APS排程的四类规则是什么? 8、APS的优化的三个目标? 9、APS与工业4.0智能制造、IIoT、AI、大数据、云计算的关系 ? 10、您认为APS对贵公司有何价值?

2018-05-23

Swift4.0 官方版本

Swift4.0最新语法官方教程(The Swift Programming Language(Swift4)) “Swift is a fantastic way to write software, whether it’s for phones, desktops, servers, or anything else that runs code. It’s a safe, fast, and interactive programming language that combines the best in modern language thinking with wisdom from the wider Apple engineering culture and the diverse contributions from its open-source community. The compiler is optimized for performance and the language is optimized for development, without compromising on either.”

2017-09-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除