![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ios开发技术点
文章平均质量分 64
dave-li
这个作者很懒,什么都没留下…
展开
-
当JavaScriptCore遇上多线程
https://cloud.tencent.com/developer/article/1470385转载 2020-03-25 13:33:51 · 247 阅读 · 0 评论 -
NSTimer循环引用解决方案
文章以在TimerViewController中使用计时器为例,在VC中声明一个NSTimer属性。创建NSTimer对象:self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(startTimer) userInfo:nil repeats:YES];...转载 2020-01-21 16:32:45 · 560 阅读 · 0 评论 -
ios数据存储的5种方式
ios数据存储的5种方式NSUserDefaults(Preference偏好设置) plist存储 归档 SQLite3 CoreData应用沙盒每个App的沙河目录结构, 都如下图所示:沙盒目录默认情况下, 每个沙盒含有1个应用程序包和三个文件夹: Documents, Library和tmp. 因为沙盒机制, 应用只能在这几个目录读写文件.MyApp....原创 2019-10-28 15:37:28 · 1755 阅读 · 0 评论 -
对KVC/KVO的一些总结
1.KVC除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性。A.Student类没有提供set方法,用kvc可以达到存取的目的。@interface Student : NSObject{ NSString *name;}@end [student setValue:@"张三" forKey...原创 2015-12-17 18:51:45 · 322 阅读 · 0 评论 -
NSOperation
2.默认情况下,NSOperation并不具备封装操作的能力,必须使用它的子类,使用NSOperation子类的方式有3种:1> NSInvocationOperation2> NSBlockOperation3> 自定义子类继承NSOperation,实现内部相应的方法这讲先介绍如何用NSOperation封装一个操作,后面再结合NSOperationQueue来转载 2015-08-01 14:20:39 · 266 阅读 · 0 评论 -
ios Notification 与多线程
先来看看官方的文档,是这样写的:In a multithreaded application, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer registere转载 2015-06-18 11:43:17 · 412 阅读 · 0 评论 -
ios 单例 三种写法
创建一个单例很多办法。我先列举一个苹果官方文档中的写法。 [cpp] view plaincopystatic AccountManager *DefaultManager = nil; + (AccountManager *)defaultManager { if (!DefaultManager) DefaultMa原创 2015-06-17 21:48:54 · 1064 阅读 · 0 评论 -
ios block 去循环引用 __weak
转载于:http://honglu.me/2015/01/06/weak%E4%B8%8Eblock%E5%8C%BA%E5%88%AB/另外我自定义了一个 TLog 方法输出对象相关值,定义如下:#define TLog(prefix,Obj) {NSLog(@"变量内存地址:%p, 变量值:%p, 指向对象值:%@, --> %@",&Obj,Obj,Obj,prefi转载 2015-06-17 21:05:50 · 294 阅读 · 0 评论 -
ARC 总结
ARC是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC),编译时插入相应的retian release。 1.ARC帮我们添加或是减少引用计数,并不是简单的发消息机制-retain、release,而是调用底层的objc_retain、objc_release. 2.使用ARC必须遵循方法命名规则, -alloc -new -copy -mutabelCop原创 2016-01-15 17:40:48 · 354 阅读 · 0 评论 -
ios UIView的layoutSubviews和drawRect
UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。综上两个方法都是异步执行的,layo原创 2016-03-04 14:34:16 · 283 阅读 · 0 评论 -
ios桥接 bridge
使用无缝桥接技术可以在定义于foundation框架的ob类和定义于core foundation框架中的c数据结构之间转换。__bridge NSArray * arry = @[@"1",@"",@"2",@"3",@"4"];CFArrayRef acfArry = (__bridge CFArrayRef)arry;//用以将 CF 对象转换为 OC 对象,或者 OC 对象...原创 2016-03-10 17:25:22 · 581 阅读 · 0 评论 -
深入理解Objective-C:Category
谢谢美团技术团队的技术分享美团类别分享摘要无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况。那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择。但是在Objective-C 2.0中,又提供了category这个语言特性,可以动态地为已有类添加新行为。如今category已经遍布于Objective-C代码的各个角落,从Apple官方的framework到各个开源...转载 2016-01-12 16:59:07 · 703 阅读 · 0 评论 -
iOS事件处理
iOS事件处理,看我就够了~https://www.jianshu.com/p/b0884faae603CALayer 添加事件处理的两种方法https://www.jianshu.com/p/766bc71711e4原创 2019-09-27 11:44:22 · 75 阅读 · 0 评论 -
iOS 编译过程
深入浅出iOS编译https://blog.csdn.net/Hello_Hwc/article/details/85226147原创 2019-09-25 16:24:08 · 118 阅读 · 0 评论 -
iOS应用签名
https://www.jianshu.com/p/02034d1a91b5https://www.jianshu.com/p/3c9e2055ae5b原创 2019-09-25 11:19:42 · 422 阅读 · 0 评论 -
Masonry链式编程思想的基本思路以及KVO底层的响应式编程
Masonry基本使用[self.enterButton mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.moviePlayer.view); make.centerY.equalTo(self.moviePlayer.view); make.he...转载 2018-07-04 15:19:59 · 218 阅读 · 0 评论 -
iOS-NSString-Base64String-Base64原理
1 NSString * sourceString = @"test"; 2 3 NSString *base64String = [[sourceString dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterL转载 2017-03-28 16:27:59 · 607 阅读 · 0 评论 -
iOS 界面卡顿原因
http://www.jianshu.com/p/59980004ac95第一. 界面卡顿的原因在 VSync[1] 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,影响因素:对象创建;对象调整;对象销毁;布局计算;Autolayout;文本计算;文本渲染;图片的解码;图像的绘制.转载 2017-03-27 11:19:46 · 4651 阅读 · 0 评论 -
oc 控件视图旋转以及frame的变化
有这样的的一个VIew点击Button后进行45度的旋转。两种方式都可以 NSLog(@"self.view2.frame - x - %f y -%f w -%f d -%f",self.view2.frame.origin.x,self.view2.frame.origin.y,self.view2.frame.size.width,self.view2.frame.原创 2016-05-26 14:57:45 · 4024 阅读 · 1 评论 -
Run Loop 使用总结
深入理解RunLoophttps://blog.ibireme.com/2015/05/18/runloop/#base RunLoop在iOS开发中的应用https://www.jianshu.com/p/adf9eb244e81 在刚刚接触iOS开发的时候,我们在Xcode的帮助下生成了第一个工程。工程里会包含一个main.m的文件,默认的代码大致如下:int m...原创 2016-01-15 16:21:09 · 482 阅读 · 0 评论 -
__autoreleasing 以及OC错误模型 异常 错误 空返回
1.异常 oc现在在机器严重的情况下才使用异常,使用异常在ARC模式不是异常安全的,就是如果抛出异常那么本应在作用域末尾释放的对象却不释放了,在非ARC的情况下也很难写出异常安全的代码。2.错误或nil返回 在OC编程范式为返回nil/0,或是使用NSError,以表明错误发生。 - (BOOL) doSomething:(NSError **) error;原创 2016-01-14 16:31:57 · 2368 阅读 · 0 评论 -
ios 延时加载
- (UIView *)supportView{ if (!_supportView) { _supportView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 75)]; } return _supportView;}原创 2016-03-29 11:23:13 · 274 阅读 · 0 评论 -
ios UITableView性能优化
1.复用[tableView registerNib:cellNib forCellReuseIdentifier:CellIdentifier];[tableView dequeueReusableCellWithIdentifier:CellIndentifer];正常只会创建屏幕高度/cell高度个cell之后进行复用,这就要保证cell类型不要过多,过多的话所创建的也会增长原创 2016-03-30 16:09:26 · 282 阅读 · 0 评论 -
IOS UITableView中Cell的重用reuse机制分析
创建UITableViewController子类的实例后,IDE生成的代码中有如下段落:[cpp] view plain copy- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {转载 2016-06-02 14:58:16 · 294 阅读 · 0 评论 -
【注意】init and initwithFrame
调用系统的 init方法 会先执行 initwithFrame 方法, 再执行 init方法, 所以同时自定义了两个接口时,避免在两个接口中调用同一个函数两次。原创 2016-11-01 14:32:19 · 219 阅读 · 0 评论 -
xml、json、protobuf、thrift与avro
XML和JSON对比XML1)应用广泛,可扩展性强,被广泛应用各种场合2)读取、解析没有JSON快3)可读性强,可描述复杂结构 XML的应用已经深入人心,不再赘述。JSON1)结构简单,都是键值对。2)读取、解析速度快,很多语言支持3)传输数据量小,传输速率大大提高4)描述复杂结构能力较弱现在比较流行的跨语言通信方案:转载 2016-11-01 15:54:07 · 2379 阅读 · 0 评论 -
weakify strongify 实现
今天来讲weakify strongify。首先看一下实现的方式:方式1: 传统写法:#ifndef weakify#if __has_feature(objc_arc)#define weakify( x ) \\_Pragma("clang diagnostic push") \\_Pragma("clang diagnostic ignored \\"-W转载 2017-02-17 14:43:26 · 431 阅读 · 0 评论 -
oc UI继承关系
原创 2017-03-15 17:35:50 · 236 阅读 · 0 评论 -
NSOprationQueue 与 GCD 的区别与选用
GCD 技术是一个轻量的,底层实现隐藏的神奇技术,我们能够通过GCD和block轻松实现多线程编程,有时候,GCD相比其他系统提供的多线程方法更加有效,当然,有时候GCD不是最佳选择,另一个多线程编程的技术 NSOprationQueue 让我们能够将后台线程以队列方式依序执行,并提供更多操作的入口,这和 GCD 的实现有些类似。这种类似不是一个巧合,在早期,MacOX 与 iOS 的原创 2017-03-17 17:02:23 · 179 阅读 · 0 评论 -
.a和.framework的区别
一、库: 库是共享程序代码的方式,一般分为静态库和动态库二、静态库与动态库的区别: 静态库:连接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。 动态库:连接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。三、iOS静态库形式和动态库形式: 静态库:.a和.framework 动态库:.dylib和.fram转载 2017-03-19 16:30:31 · 2389 阅读 · 0 评论 -
ios view的frame和bounds之区别(位置和大小)
https://www.jianshu.com/p/f972e0db785a转载 2017-03-24 15:05:04 · 190 阅读 · 0 评论 -
ios动态添加属性的几种方法
在ios运行过程中,有几种方式能够动态的添加属性。1-通过runtime动态关联对象主要用到了objc_setAssociatedObject,objc_getAssociatedObject以及objc_removeAssociatedObjects[objc] view plain copy//在目转载 2017-03-25 13:47:40 · 795 阅读 · 0 评论 -
oc block 中直接引用成员变量 循环引用
问题的答案是一定会发生循环引用。那解决方式: __weak typeof(self) wself = self;用wself访问成员变量就好。既然发生了循环引用一定是retain了self了,那又是为什么block不retain成员变量指针会retain self 呢?原因是oc是动态语言,实例变量的地址可能被其他实例变量占用,直接引用的话容易出原创 2017-03-25 14:24:09 · 1261 阅读 · 0 评论 -
UICollectionView详解
什么是UICollectionViewUICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView(请一定注意这是UICollectionView的最最简单的形式)。如果你用过iBooks的话,可能你还对书架布局有一定印象:一个虚拟书架上放着你下载和购买的各类图书,整齐排列。其实这就是一个UICollectionView的表现形式,或者iPad转载 2016-06-02 15:47:26 · 335 阅读 · 0 评论 -
oc addChildViewController
转载于 http://www.tuicool.com/articles/3ymMzub@interface HMTMainViewController () @property (nonatomic ,strong) HMTThirdViewController *thirdVC;@property (nonatomic ,strong) HMTFirstViewControlle原创 2016-05-31 19:01:42 · 874 阅读 · 0 评论 -
UIView的alpha、hidden和opaque属性之间的关系和区别
UIView的alpha、hidden和opaque属性之间的关系和区别作者:wangzz原文地址:http://blog.csdn.net/wzzvictory/article/details/10076323转载请注明出处如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢!UIView的这几个属性转载 2016-03-30 16:11:15 · 225 阅读 · 0 评论 -
IOS self = [super init];
https://www.jianshu.com/p/9b36e1b636d8转载 2016-03-30 18:33:58 · 280 阅读 · 0 评论 -
ios 循环引用的场景
声明delegate为strong类型,简而言之,如果父VC持有子VC,并设置子VC的delegate为self(也就是父VC),这样的结果就是子VC也间接持有了父VC,造成循环引用,在Pop子VC的时候不会调用delloc。timer是否持有self,1.NSTimer对象会保留目标,直到其失效为止,调用invalidate可以让其失效,或者一次性计时器触发任务完成之后。2.原创 2016-03-31 14:26:35 · 325 阅读 · 0 评论 -
oc消息转发机制
转载于-----http://wxgbridgeq.github.io/blog/2015/07/09/effective-oc-note-second/Class 类型对象OC本身是一种强类型语言,但其运行时功能让它又有了动态语言的特点。OC中对象的类型和对象所执行的方法都是在运行时阶段进行查找并确认的,这种机制被称为动态绑定。想要弄清楚运行时如何能够实现动态绑定机制,首先要了解转载 2016-05-11 16:30:11 · 2021 阅读 · 0 评论 -
oc GCD 信号量
信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待。当一个信号量被信号通知,其计数会被增加。当一个线程在一个信号量上等待时,线程会被阻塞,直至计数器大于零,然后线程会减少这个计数。 dispatch_semaphore_t m_semaphore; m_semaphore =dispatch_semaphore_create(0); ///0原创 2016-05-11 20:40:40 · 820 阅读 · 0 评论