自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ohyeahhhh的博客

风一样的骚年

  • 博客(55)
  • 收藏
  • 关注

原创 React Native 中的图片组件加载图片后会有缓存吗?

先把结论亮出来:React Native 中的图片组件默认会利用 NSURLRequest 的缓存机制对图片资源进行缓存。下面一探究竟。图片控件在JSX中使用标签来表示,通过source属性来指定它展示的图片文件。到底图片怎么缓存呢,这个要看这个图片控件是怎么完成图片文件的加载的。 图片在ios原生中通过RCTImageViewManager暴露给js的,看这个类 可以看到,js中的s...

2018-09-12 22:52:56 4464

原创 剪贴板UIPasteboard

剪贴板的分类剪贴板分为系统的和app私有的剪贴板必须有个名字。系统的剪贴板有两个,一个叫UIPasteboardNameGeneral,一个叫UIPasteboardNameFind,它们的使用场合不一样。通过 generalPasteboard可以获得名字为UIPasteboardNameGeneral的剪贴板,通常用来复制、剪切和粘贴。 一个创建或者获取剪贴板的方法pastebo...

2018-09-12 22:33:45 1384

原创 react/react native 组件的刷新机制

组件(Component)的刷新机制一个组件在加载完毕后,如果既没有外部驱动,也没有内部驱动,是不会进行重新渲染的。按照React文档上说的,组件想要对自身进行刷新,可以通过调用setState()或者forceUpdate()来实现,这是让组件刷新的其中一种办法,也就是我说的内部驱动。而另一中则是由外部驱动,也就是让父组件驱动子组件进行重新渲染,那么下面就是阐述父组件如何让子组件发生重新渲染。先说

2017-03-25 16:40:52 15133

原创 react-native-cli简单理解

在项目下通过npm为该项目安装react-native后,在node_modules中就有react-native这个文件夹。进入该文件夹,有一个local-cli文件夹。这个文件夹是被react-native-cli使用的。react-native-cli通过npm install -g react-native-cli命令被安装到了本机,通过 which react-native命令可以知道所使

2017-02-04 17:03:03 11332 3

原创 JavaScriptCore学习总结

JavaScriptCore可以完成OC中执行js语句,在oc中访问js代码中定义的全局变量(包括方法),也可以使得oc中定义的属性、方法得以在js代码中被调用。 整个JavaScriptCore framework包含的头文件如下,其中开放的接口可以分为两部分,一部分是C接口,一部分是OC接口。如果需要使用OC接口,那就引用JavaScriptCore.h,如果只需要使用C接口,那就引用Java

2017-01-23 11:05:47 1179

原创 source tree使用

要明白source tree怎么用还是得先 明白git的基本原理和概念 看这里:git book 中文的特别好: https://git-scm.com/book/zh/v2 从1.1看到1.3就好了。source tree就是把git命令用图形化按钮表示,懂了git才知道source tree每个按钮所对应的命令实际上是什么意思。 下面讲的完全针对source tree的,就是一些个人使用

2017-01-23 10:53:18 1186

原创 有关coreGraphics

coreGraphics 对于iOS只能在drawRect中使用,因为只有在drawRect方法中可以通过UIGraphicsGetCurrentContext方法获取到可以用来绘图的context。1.重新绘图相关方法和属性通过UIView的setNeedsDisplay或setNeedsDisplayInRect:来使view重新调用drawRect方法进行绘图。contentMode 该属性

2017-01-23 10:41:19 432

原创 xcode配置问题

header search path设置header search path,可以让xcode找到头文件所在位置。 只要把头文件所在位置加到header search path(不管该头文件是否在本项目内),就可以引用到该头文件,而不会报找不到头文件的错误提示。Link Binary With Libraries在Link Binary With Libraries中链接一个库,可以让本项目访问到

2017-01-23 10:37:12 364

原创 xcode command line tool

xcode command line tool xcode 命令行工具 作用:使得终端可以找到并运行xcode的相关程序。 命令:xcode-select 这个命令是用来选择xcode command line tool默认会使用的xcode(尤其在电脑中安装了多个xcode时,它的作用更加明显)。设定了以后,当终端要使用xcode的可执行程序, xcode command line too

2017-01-23 10:35:39 1073

原创 React组件Component

在React,组件(component),就是一个UI的单元。它的思想是,将要展示的内容,分成多个独立部分,每一个这样的部分,就是一个组件,就有点像android或者ios中的控件。组件的基本组成部分每个组件,其实在代码中提现出来就是一个类,一个最简单的组件:class Greeting extends React.Component { render() { return <h1>He

2017-01-23 10:24:03 6118

原创 加载一个react native 页面

要在原生app中加载js视图,首先要先将js资源文件加载到app中,然后使用一个原生类的实例作为容器承接js定义的视图,最后将这个容器类实例添加到原生视图中。加载JS Bundlejs代码是以JS Bundle的形式保存的,在app中使用js中定义的组件、方法之前,首先要加载JS Bundle。1.获取JS bundle的资源路径 如果url已知那就跳过这一步,如果不知道url应该是怎样的可以看

2017-01-23 10:13:34 3377

原创 命令行下启动react-native项目报错

关于运行react-native run-ios报错 react-native run-ios这个命令做了什么?第一步:这个命令会在当前目录下找ios文件夹,然后再从这个文件夹中寻找项目的.xcodeproj文件。因此就要求,项目的.xcodeproj文件需要放在ios文件夹中,否则它找不到。 Print: Entry, ":CFBundleIdentifier", Does Not Exist

2017-01-23 09:54:28 2780

原创 flexbox----react native中的布局方式

flexbox,一种类似于流布局的布局方式,就是让组件按照一定的规律进行自动排列,涉及到四个重要属性:占比(flex)、分布方向(flexDirection)、内容调整方式(justifyContent)、整体对齐方式(alignItems)。其中,父组件通过指定分布方向(flexDirection)、内容调整方式(justifyContent)、整体对齐方式(alignItems)来决定其子组件的

2017-01-23 09:45:14 402

原创 有关homebrew

安装homebrew没有报错但brewcommand not foundbrew tap 和 brew update使用homebrew安装系统已经自带的软件通常是想要一个新版本1. 安装homebrew没有报错但brew:command not found无法安装homebrew homebrew的安装有几个要求: 1.cpu是Intel的 2.os X 10.10以上 3.已经安装

2016-11-15 10:29:06 958

原创 删除launchpad中无法正常移除的图标

经常会不通过appstore下载软件,也就是从网页中下载dmg,自己安装,但是当我不再想要这个软件,然后把它卸载掉之后就会发现,launchpad里还是遗留了这个软件的图标,而且删不掉。这个时候,就可以下面的办法就管用啦! 思路:找到存放launchpad中图标的数据库,对数据库进行操作直接删除对于的图标。第一步找到com.apple.dock.launchpad文件夹:打开一个folder,

2016-11-15 10:23:34 48449 14

原创 安装cocoapods遇到的问题总结

问题一卡在setting up master repos过不去问题二升级ruby问题三homebrew 出问题 brew install无法运行问题四ruby和gem到底什么关系问题五当前可用的rubygem的下载源问题一:卡在setting up master repos过不去运行 pod setup之后,卡在上面那句话过不去。可以尝试自己直接到~/.cocoapods/repos下构建一

2016-11-04 11:36:23 373

原创 react和react jsx基础

本文是个人学习笔记,例子都是来自React Native官网。之前不是做前端的,没有使用过react,要学习react native做混合开发,react,包括react jsx还是得补补。react和react jsxreact是一个js库。有很多可以用的方法,react jsx是对javascript进行封装,提供一种类似于xml格式的语句,跟html也类似,使得在js中创建、修改元素,建立元素

2016-09-13 16:44:28 1644

原创 GATT协议及蓝牙核心系统结构

本文内容是阅读自以下链接后整理的笔记,理解还不深:https://www.bluetooth.com/specifications/bluetooth-core-specificationhttps://www.bluetooth.com/specifications/generic-attributes-overviewGATT协议GATT generic Attributes的缩写,中文是通用属

2016-08-10 19:43:36 21416 4

原创 iOS coreBluetooth编程中需要注意的问题

iOS 设备作为中心设备(central device)时需要注意:(1)一定要对central Manager保持强引用,也就是说central Manager需要是一个全局变量不能是局部变量,否则不能启动扫描。 (2)连接到peripheral之后,一定记得为peripheral设置代理,否则无法进行服务和特征的发现。 (3)有关CBCentralManagerDelegate协议 协议方

2016-08-10 19:01:13 3558 1

原创 SDWebImage的探索(1)

SDWebImageOperation定义了一个SDWebImageOperation协议,协议仅定义了一个cancel的方法。SDWebImageCompat一个实现图片缩放的工具类。写了一个根据缓存的key是否包含『@3x』或『@2x』来把图片压缩到合适尺寸的方法,居然用了我今天才碰了壁的递归。。。支持动画。用到一个inline关键字来修饰一个方法。网上查到意思是表示内联函数。内联函数类似于

2016-07-26 22:16:03 871

原创 run loop 再次理解和总结

run loop是什么?RunLoop 的本质就是一个函数,其内部是一个 do-while 循环。 线程需要调用runloop这个函数,来处理传入的事件。线程会一直停留在这个循环里;直到超时或被手动停止,该函数才会返回。run loop的功能处理事件,包括由输入源传来的事件,和定时器传来的事件。 产生有关运行行为的notifications。可以在线程中给runloop添加监听者。 run l

2016-07-22 10:36:29 481

原创 GCD

GCD 的整体认识GCD (grand central dispatch)直译过来是宏大的中心分配,实际上就是一个线程管理技术。这种技术区别于程序员自己手动创建和管理线程,它可以自动根据系统的情况按需创建线程和管理线程。这里所说的系统的情况包括系统运行所在的处理器是多少核的,也就是说,这个GCD技术可以均衡任务到多核上,发挥处理器的多核性能。 GCD的便利在于,它将上述的复杂功能封装出简单易用的接

2016-07-20 22:10:29 1454

原创 CocoaPods 命令和使用

CocoaPods 命令pod init 在新建的项目根目录下运行该命令,为当前项目新建podfile文件。 pod install 下载和配置 podfile里定义的项目依赖(不包括已经下载和配置的项目依赖)。(新建podfile.lock文件)并将每个依赖的版本信息记录在podfile.lock文件中。为项目新建.xcworkspace文件。 pod outdated 列出比podfile.

2016-07-11 09:58:33 4112

原创 notifications 消息通知(本地事件通知)

一、 涉及的概念涉及的概念:事件,消息,消息中心,监听者,消息发送者二、 基本流程:路线一: 1.消息中心登记监听者及其需要监听的消息(也叫注册监听者)。 2.消息发送者发送消息。 3.消息中心向所有已登记的监听者广播此消息。 路线二: 1.消息中心登记监听者及其需要监听的消息(也叫注册监听者)。 2.发送者将消息添加到消息队列,消息队列将类似的消息按一定规则集中起来再送达消息中心。

2016-07-07 10:14:07 1429

原创 自定义键盘

自定义键盘的两种需求: 1. 在系统键盘上增加一些按钮 2. 用写自己的键盘这就要涉及到UIResponder的各种属性了。所有的支持事件响应的控件都是UIResponder的子类。UIResponder中定义了很多属性来共同设置当一个控件becomeFirstResponder的时候如何响应。这些属性都是只读的。我们要使用这些属性,通常要在自定义的控件中重新定义这些属性,并且可读可写,然后给他

2016-07-07 09:41:10 2557

原创 iOS 动画的实现

与动画有关的框架: 实现动画,可以使用最上层的UIKit,这个框架中的UIView类有许多与动画有关的方法。UIView的动画实现是基于Core Animation的。在UIView不能满足需求的时候,也可以直接使用Core Animation框架来实现动画。一、可以作为动画元素的属性动画的形成是通过在一定时间内不断改变视图的某个属性,以形成动起来的效果。对于不同的对象,可以作为动画元素的属性

2016-07-07 09:27:03 755

原创 哈希算法

一、哈希算法验证数据完整性可以用哈希算法。对发送数据和接收数据的哈希值进行比对,如果一致,证明接收数据与发送数据一致,及数据完整。SDK提供了哈希算法有关的API,支持MD2、MD4、MD5、SHA-1、SHA224、SHA256、SHA384、SHA512算法。方法声明在< CommonCrypto/CommonDigest.h > 举例:MD5算法API使用方法 MD5加密,结果为32位十六

2016-05-07 16:40:56 2684

原创 iOS 多线程的管理

本文讲创建分线程的方法。第一种:直接调用NSObject的方法第二种:利用NSThread创建新线程第三种:创建NSOperation,并加入到队列NSOperationQueue中第四种:GCD (grand central dispatch)线程优化技术第一种:直接调用NSObject的方法所有的类都是NSObject的子类,因此都继承了这些方法:- (void)performSele

2016-05-07 16:37:43 1988

原创 iOS timer计时器

timer,计时器,就是用来计时的,可以将它和要处理的动作绑定起来,让这个动作在某段时间之后执行,或者周期性地执行。一、timer的工作原理timer的工作和run loop密不可分,由于平常我们使用Application Kit和UIKit来新建的app,在app的主线程启动的时候就自动启动了一个runloop,因此在主线程中使用timer感觉不到runloop的存在。如果要在分线程中使用time

2016-05-07 16:16:47 3678

原创 keychain service钥匙串服务

keychain service钥匙串服务是iOS提供的用于管理用户密码、密钥、证书、标识的服务,它相当于一个加密容器,app可以把相关的用户信息以钥匙条目的形式存储到其中,钥匙串服务会将所有存储到其中的条目进行加密,并保护起来,只允许创建这个条目的app访问它。app要把用户信息(钥匙)添加到钥匙串服务(钥匙串)中,在必要时从钥匙串服务中取出用户信息,这些动作需要用到Keychain Servic

2016-05-07 16:08:07 3034

原创 iOS 网络请求 笔记

一、url请求网络请求的组成部分有服务器地址、请求参数,以及请求方式。在iOS中,一个网络请求用NSURLRequest(或者其子类NSURLMutableRequest)来表示。NSURLRequest适合于get请求,NSURLMutableRequest可以是post请求。get方式下,服务器地址和请求参数都可以明文包含在u

2016-05-07 15:46:09 1989

原创 collection View学习笔记

collection View的三个逻辑组成部分:数据、子视图、布局。一、collectionView和tableView的比较1. 和tableView的共同点:(1)都继承scrollView (2)都需要两个代理:delegate和dataSourceDelegate (3)都按分区(section)和单元格(cell)对子视图进行管理 (4)都有重用机制,每次从重用池中取出一个cell

2016-04-22 19:18:00 1104

原创 storyboard和xib使用总结

视图控制器的可视化管理工具storyboard和xib1. storyboardstoryboard的作用是可以把所有的viewController以及其管理的view都展示出来,并且用线和箭头表明他们之间的跳转关系。需要在代码中使用storyboard中的某个controller时,需要先获取storyboard,然后再通过storyboard获取其中某个controller的一个实例。具体要获取

2016-04-20 22:05:26 1116

原创 屏幕适配 size class

1. size class尺寸类型如果把屏幕的长和宽都按长度划分三种类型:压缩(compact)、任意(any)、常规(regular),那么长和宽的组合就有9种类型。这里我把每一种类型称为一种模式。另外,屏幕的状态根据尺寸大小和其方向可以分为很多情况。模式和屏幕的状态有着对应关系,可以是一对一,也可以是一对多。比如说,一种模式叫任意模式,也就是长是任意的,宽也是任意的,这种模式可以对应所有的屏幕状

2016-04-20 21:46:12 1232

原创 UI自动布局

当内部或外部条件发生变化的时候,自动重新计算视图的位置和大小。对于ios应用,可以触发自动布局的变化可以分为外部变化和内部变化: 自动布局需要通过约束constraint来实现。下面,先说明使用约束来实现自动布局的原理,后说明如何创建、修改、查看约束。

2016-04-19 20:06:37 3347

原创 UITableView 总结

知识点回顾: 1.TableView 2.UITableViewController 3.两个协议,一个关于数据加载的协议< UITableViewDataSource >,一个关于性外和外观的协议< UITableViewDelegate > 4.对NSIndexPath类的扩展 5.tableView的单元格cell 6.响应点击事件7.重用机制下布局cell的子视图时需要注意的问题

2016-04-16 16:22:12 3351 2

原创 使用appearance proxy定制控件的默认外观(详解)

定制默认外观,也就是使用appearance proxy。下面就来详细介绍appearance proxy。appearance proxy外观代理:外观代理,它是一个管理可视化类(比如控件)的默认外观的对象。我们可以通过这个类的外观代理,来修改这个类的默认外观(与外观有关的属性的默认值),或者这个类在某种场合下的默认外观。需要遵守协议:UIAppearance、UIAppearanceContainer

2016-04-09 16:13:22 1953

原创 UINavigationBar的视图层级关系

第一次比较真切地感受debug view hierarchy的作用。用它来探究一下UINavigationBar的视图层级关系。触发我去看这个的原因是我在学习《动态修改UINavigationBar的背景颜色》中遇到了疑问。下面集合小例子来说明探究结果。从view hierarchy可以看到,当为navigationBar设置了背景图片以后,一个没有添加任何item的navigationBar从底到

2016-04-08 11:01:48 3815

原创 UI页面跳转和传值

一、页面跳转:利用navigation实现跳转和利用模态跳转的区别: navigation实现跳转,始终在同一窗口,由导航栏来管理不同的viewController的加载和退出,因此导航栏始终在。 模态实现跳转,是新建一个窗口,如果需要新的窗口也具有导航栏,那么要重新设置导航栏。二、传值在从view1跳转到view2的情况下,根据传值的方向可划分为两种情况:情况一:从view1传值到view2这

2016-04-05 11:23:59 1551

原创 C是如何支持OC运行的

C是如何支持OC运行的objc是C的扩展,它的使用是由C语言的类库支持的。其中最根本的就是objc类库,从其头文件先看<objc/objc.h>下面逐句来看看,这个头文件都定义了些什么。本文都是以先代码,后解释的顺序进行的。 一、先看头文件中定义的各种数据类型,这些类型与OC中面向对象的基本概念有着密切联系1.OC的类typedef struct objc_class *Class; ` //

2016-04-02 17:21:56 1062

空空如也

空空如也

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

TA关注的人

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