- 博客(54)
- 收藏
- 关注
原创 Instruments-Leaks 不显示方法的问题
打开xcode 进入工程将工程clearcommand+control+I 编译用于检测内存的 bundle选择leaks点击leaks左上角运行 ok
2017-11-28 12:33:36
1670
转载 iOS之报错“Cannot create __weak reference in file using manual reference counting”解决办法
解决的办法:在Build Settings———>Aplle LLVM8.0 - Language - Objectibe-C————->Weak Reference In Manual Retain Release 设置为YES。
2017-09-06 15:12:16
633
原创 NSThread 和 RunLoop
线程:一个独立执行代码的路径进程:一个可执行程序,包含多个线程使用场景将与UI界面显示、影响界面流畅度的事情 都应该 子线程处理。一. NSThread1.NSThread创建带有返回值的创建// 创建子线程 1 NSThread *oneThread = [[NSThread alloc]initWithTarget:self selector:@selector(threadEvent)
2017-06-19 16:17:00
1531
原创 iOS 的内存与存储区域
栈区(stack)概述:栈是向低地址扩展的数据结构,是一块连续的内存区域。由栈顶的地址和栈的最大容量是系统预先规定好的。栈的空间很小,大概1-2M。超出overflow。使用:栈区,就是函数(方法)运行时向系统请求的内存。栈中的局部变量,参数由编译器分配和释放,函数运行就分配,函数结束就释放,由系统完成。是系统数据结构,对应进程唯一。特别注意:系统栈的剩余空间 大于 所申请的空间,系统为程序提供内存
2017-06-13 16:18:32
3493
原创 Static 与 const
同事问到我这个基础问题,这里做下记录,方便查阅1. Staticstatic 修饰变量1. 局部的 static 变量简单说就是局部的静态变量(存储在静态数据区),在哪一个代码块中声明,就只能在那里使用。优点:因为变量存储于静态区域,所以会记录下上一次变量的数据。2. 外部的 static 变量不加static的外部(代码块{}之外的)变量,默认静态变量,作用域很广,加上static为了
2017-06-13 11:24:32
340
原创 走你_OBJC_CLASS_$_xxx", referenced from:
姑娘又换红妆,xcode8.3.3苹果爸爸已经放出8.3.3好几天了,在清晨的一米阳光之中,我决定要更上一更!更新完成…command+B之后,一点红芒将深沉而忧郁的我从诗与远方中惊醒。 我….真是握了棵草。 就像揭开了小娘子的面纱,她却赌气的撅起小嘴!而你还得哄哄! 知文达意,链接报错,找不到LoginViewController类 Tagert–Build Phases – Compil
2017-06-09 15:56:01
573
原创 Swift autoLayout 下的UILabel 换行问题
1. numberOfLines这个大家都知道设置为0.numberOfLines = 02. 设置约束比如上下左右,这里使用了SnapKit。.snp.makeConstraints({ (make) in make.top.equalTo(self).offset(5) make.left.equalTo(self).offset(15)
2017-04-14 10:17:27
1965
原创 swift 调用 oc [cannot find interface declaration for ‘ BaseViewModel’ , superclass of ‘indexViewModel’
* 看报错,indexViewMode找不到父类BaseViewModel* 在桥接文件里 有#import "IndexViewModel.h",没有baseviewmodel,然后加上了#import "BaseViewModel.h"现在桥接文件是这样#import "IndexViewModel.h"#import "BaseViewModel.h"依然报同样的错误 这是因为 桥接文
2017-03-22 09:21:58
2305
原创 Swift KVO触发问题(runtime支持不友好)
说一说在Swift中使用kvo的一点小坑*kvo实现原理*kvo是基于runtime实现的一个类的属性注册了观察者,在运行时,会动态的创建这个类的派生类(就是子类)键值观察通知依赖于NSObject 的两个方法:willChangeValueForKey: 和didChangevlueForKey:;在一个被观察属性发生改变之前, willChangeValueForKey:一定会被调用,这就
2017-03-15 15:22:18
1636
原创 RxSwift (9) 调试符号
debugRxSwift的调试func rx_skipUntil(){ let disposeBag = DisposeBag() let sourceSequence = PublishSubject<String>() let referenceSequence = PublishSubject<String>() sourceSeque
2017-03-13 15:49:54
577
原创 RxSwift (8) 错误处理
catchErrorJustReturn发送错误信号的时候,转换为指定的信息 发送func rx_catchErrorJustReturn() { let disposeBag = DisposeBag() let sequenceThatFails = PublishSubject<String>() sequenceThatFails .catchErrorJ
2017-03-13 15:19:12
1693
原创 RxSwift (7) 手动启动序列[连接性序列]
publish转化连接序列,订阅时不会发出信号,执行connect方法时,才开始发射信号func rx_Publish() { let intSequence = Observable<Int>.interval(1, scheduler: MainScheduler.instance) .publish() _ = intSequence .subscr
2017-03-13 14:35:37
353
原创 RxSwift (6) 观察量序列转换符
toArraay将一个序列 发出的所有信号元素 转化为数组func rx_toArray() { let disposeBag = DisposeBag() Observable.of("1","a","b")//range(start: 1, count: 10) .toArray() .subscribe { print($0) }
2017-03-13 11:06:28
881
原创 RxSwift (5) 条件运算符
filter将信号元素 筛选 符合条件的 继续发送,不符合的舍弃 func rx_filter(){ let disposBag = DisposeBag() Observable.from(["美腿","丝袜","超短裙"]) .filter{x in x=="美腿"} .subscribe{print($0)}
2017-03-13 10:39:02
662
原创 RxSwift (4) 转换符号
转换 观察量序列 发出的next信号 元素的 运算符map将接收的信号的值 做出处理 再传递下去func rx_map(){ let disposeBag = DisposeBag() let aObserable = Observable<String>.create { (observe) -> Disposable in observe.o
2017-03-10 17:01:08
599
原创 RxSwift (3) 组合符号
startWith在开始发出订阅信号前,按照后进先出原则,发出指定的信号 func rx_operators_startWith(){ let disposeBag = DisposeBag() // 观察量序列 of是固定元素的观察序列 var ofObservable = Observable.of("制服","丝袜","吊带","短裙")
2017-03-10 10:19:56
608
原创 RxSwift (2) Subject
Subject简述既可以作为观察量序列(Observable),也可以作为观察者(observer)作为观察量序列的时候,将Observable里面 订阅的发送信号事件序列 剥离出来了,进行先订阅,后实现订阅的事件序列,也就是发送信号啦。作为观察者,就是实现发送信号。看下面的例子吧PublishSubject订阅之后 ,才开始发送信号func rx_PublishSubject(){
2017-03-09 14:26:23
676
原创 RxSwift Observable(观察量) subscribe(订阅)
RxSwift Observable(观察量) subscribe(订阅)1.观察量Observable(监听 元素一系列变化 并且 内部相应作出处理) 生成的一个方法这个元素可以是多样化,比如array,string,button的事件,文本框的字符串变化。特点Observable< E >,E代表观察的元素类型转化为一个序列,本身并不会触发执行。只有 被订阅的时候,才会触发执行。如果
2017-03-07 16:43:00
1370
原创 OpenGLES2.0 概念
1. 1缓存 (buffer)* OpenGLES 为GPU和CPU的内存区域 数据交换定义了缓存(buffer)的概念。*优点:缓存是指 图形处理器能够 制和管理的 RAM。程序从 CPU 的内存复制数据到 OpenGL ES 的缓存。在 GPU 取得一个缓存的所有权以后,运行在 CPU 中的程序理想情况下将不 再接 这个缓存。通过 制独 的缓存,GPU 就能够尽可能以最有效的方式读写内存。
2017-02-17 15:25:46
1950
原创 3D基本小知识
3D渲染用3d数据生成一个2d图像的过程叫做渲染,在计算机上显示的图片是由矩形 的颜色点组成的,这些矩形的颜色点 做像素。像素一个像素点由3各颜色单元构成,一个红点、绿点、蓝点组成。图像图像是以每个像 至少包含 3 个值的一个数组存 在电 的存 器中的。第一个值 指定了像 的 色元 的强度,第 个值代表 色强度,第三个值是 色强度。一个包 含 10000 个像 的图像能够以一个拥有 30000 个强
2017-02-17 14:26:08
328
原创 AFNetworking 状态栏小菊花
网络请求 状态栏小菊花转动问题,afn默认没有开启,需要开启导入#import "AFNetworkActivityIndicatorManager.h"然后 [AFNetworkActivityIndicatorManager sharedManager].enabled = YES; 就可以了这个方法afn会自动检测,只有网络加载缓慢,数据量较大的时候才会显示,如果需要每次都显示那就自己设置
2017-02-03 10:14:32
1642
原创 __Block
我们知道在Block使用中,Block内部能够读取外部局部变量的值。但我们需要改变这个变量的值时,我们需要给它附加上__block修饰符。__block另外一个比较多的使用场景是,为了避免某些情况下Block循环引用的问题,我们也可以给相应对象加上__block 修饰符。为什么不使用__block就不能在Block内部修改外部的局部变量?我们把以下代码通过 clang -rewrite-objc 源
2016-12-09 17:12:05
387
原创 函数式编程的前世今生
函数式编程的前世今生一等函数的理念可以追溯到 Church 的 lambda 演算 (Church 1941; Barendregt 1984)。此后,包括 Haskell,OCaml,Standard ML,Scala 和 F# 在内的大量 (函数式) 编程语言都不同程度地借鉴了这个概念。 OC中的一等函数 是 blocksSwift 中就是闭包尽管在语义上oc和swift
2016-12-09 17:09:00
577
原创 calayer
UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身完全是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALaye
2016-12-09 17:04:03
295
原创 Thread
(void)threadStudent{ /// 静态创建 [NSThread detachNewThreadSelector:@selector(testThreadOne) toTarget:self withObject:nil]; /// 这一句跟上面一句效果一致 [self performSelectorInBackground:@selector(testThreadOne) w
2016-12-09 17:01:52
380
原创 NSOperationQueue
-(IBAction)operationQueue:(id)sender{ NSOperationQueue *queue = [[NSOperationQueue alloc]init]; queue.maxConcurrentOperationCount = 10;//最多添加10个线程。NSOperationQueueDefaultMaxConcurrentOperatio
2016-12-09 17:00:33
348
原创 RunLoop
与线程关系 :runloop依赖于线程,每一个线程都有一个与之对应的runloop,子线程的runloop需要手动启动,当线程结束,runloop也会结束运行 [[NSRunLoop currentRunLoop]run]; [loop1 runUntilDate:[NSDate date]];//[NSDate date]一直运行 [loop2 runMode:NSDefaultRunL
2016-12-09 16:59:40
300
原创 GCD
//创建串行队列 DISPATCH_QUEUE_SERIAL// 并行队列 DISPATCH_QUEUE_CONCURRENT//0.dispatch_queue_t serialDispatchQueue = dispatch_queue_create("blog.youkuaiyun.com/baitxaps", NULL);//1.dispatch_queue_t concurrentDispat
2016-12-09 16:57:44
251
原创 NSString的内存实现
NSString等Foundation框架提供的类的内存管理 (1)字符串的常量池(在数据区) (2) NSString *str1 = @“abc”; NSString *str2 = [NSString stringWithString:@”abc”]; NSString *str3 = [[NSString alloc
2016-12-09 16:56:04
609
原创 assign,copy,retain ,weak,strong(二)
如果需要持有一个对象,那么对其发送retain 如果之后不再使用该对象,那么需要对其发送release(或者autorealse) 每一次对retain,alloc或者new的调用,需要对应一次release或autorealse调用什么时候retain例如:person是一个类在vc声明了属性person1和person2@property (nonatomic,strong) person
2016-12-07 23:14:29
392
转载 iOS中assign,copy,retain之间的区别以及weak和strong的区别
@property (nonatomic, assign) NSString *title; 什么是assign,copy,retain之间的区别? assign: 简单赋值,不更改索引计数(Reference Counting)。 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 weak 和strong的区
2016-12-07 21:07:08
275
原创 [UIView] insertView
- (void)addSubview:(UIView *)view;//添加到末尾- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;//添加目标视图的下面,会被盖住- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)sibling
2016-11-25 21:34:34
670
原创 导航字体颜色修改
//@{}代表Dictionary [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
2016-11-25 21:04:32
476
原创 pod setup 失败解决[2016.11.18]
一 .fork cocoapos 原Specs 到自己的 github账户这样forke二 clone specs 到 repos下终端 cd /Users/用户名/.cocoapods/repos 到目录下git clone 你fork 到自己github的地址 下载文件将下载的文件名字改为master执行pod setup
2016-11-19 14:52:58
499
原创 IOS中的数据结构的概念(1)
IOS中的数据结构的概念(1)一 数据(类)描述现实世界事物的符号,在计算机中就是我们常用的对象喽,例如NSObject 、UIImageView、 Int、自定义的任何类对象都是数据。特点:可以输入到计算机中。能被我们编写的程序处理。数据元素(对象)组成数据的单位 例如男人、女人是人类的数据元素;跑车、三轮车、电瓶车,自行车是车类的数据元素。数据项(属性)组成数据元素的单位 ,数据对象性质
2016-11-19 00:02:12
1286
原创 线程同步
举例场景例子:重庆售票窗、上海售票窗都在卖一趟飞机票问题,出现两个售票窗同一时刻卖一张票这肯定是不合理,下面说解决方式解决方式线程锁,我们专业点,嗯线程同步GCD Semaphore (信号量)示例代码//"最后一张票,不骗你" __block NSInteger planeTicketCount = 1; // 创建线程锁 信号=1 dispatch_semaphor
2016-11-15 18:07:49
365
转载 xcode 断点卡死
只要一打断点,就无限卡死,变量区一直菊花在转,只有强制退出Xcode才能重新编译,找了Google和Stack OvewFlowe依然没有解决办法.删除项目,重新安装Xcode,重新运行程序一切办法都解决不到,百度上说的”build setting中将Enable Clang Module Debugging设置为NO`即可” 也不行,最后我找到解决的办法就是 1.工程名.xcworkspace (
2016-11-11 11:03:31
3907
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人