![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
objetive-c
文章平均质量分 88
水麒麟灬
把分享当做自己的仓库。
展开
-
正确使用Block避免Cycle Retain和Crash
Block简介Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事。需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block坑最多的地方,错误的内存管理 要么导致return cycle内存泄漏要么内存被提前释放导致crash。 Block的使用很像函数指针,不过与函数最大的不同是:Bl转载 2015-07-06 12:17:29 · 520 阅读 · 0 评论 -
UIImage 压缩
直接上代码。实际使用中可以根据需要调节图片size 和压缩比例compressionQuality-(UIImage *)compressImage:(UIImage *)image{ float actualHeight = image.size.height; float actualWidth = image.size.width; float maxHeight =原创 2015-08-13 16:23:35 · 939 阅读 · 0 评论 -
iiOS开发UI篇--IOS动画(Core Animation)总结
IOS动画Core-Anima目录(?)[-]一简介二Core Animation类图以及常用字段三IOS动画的调用方式第一种UIView 代码块调用第二种UIView begin commit模式第三种使用Core Animation中的类四IOS动画的使用1基础动画CABaseAnimation2关键帧动画CAKeyframeAnimation3组动转载 2015-08-17 12:26:53 · 587 阅读 · 0 评论 -
UIAlertController
你知道 UIAlertView、UIActionSheet (以及它们各自的 delegate protocols) 在 iOS 8 中已经被废弃了吗?这是真的。在你的代码中按住 ⌘ 点击 UIAlertView 或者 UIActionSheet,你就会看到最上面的注释:UIAlertView is deprecated. Use UIAlertController with a翻译 2015-08-05 11:59:21 · 667 阅读 · 0 评论 -
从C的伪代码到汇编,动手实现objc_msgSend
原作者 Mike Ash原文地址objc_msgSend 函数支撑了我们使用 Objective-C 实现的一切。Gwynne Raskind,Friday Q&A 的读者,建议我谈谈 objc_msgSend 的内部实现。要理解某件事还有比自己动手实现一次更好的方法吗?咱们来自己动手实现一个 objc_msgSend。Tramapoline! Trampopoline!转载 2015-08-17 15:13:02 · 731 阅读 · 0 评论 -
UIWebView与JS的深度交互
事情的起因还是因为项目需求驱动。折腾了两天,由于之前没有UIWebView与JS交互的经历,并且觉得这次在功能上有一定的创造性,特此留下一点文字,方便日后回顾。我要实现这样一个需求:按照本地的CSS文件展示一串网络获取的带HTML格式的只有body部分的文本,需要自己拼写完整的HTML。除此之外,还需要禁用获取的HTML文本中自带的 《 img 》 标签自动加载,并把下载图片的操作放在转载 2015-08-17 15:37:55 · 473 阅读 · 0 评论 -
iOS: 如何正确的绘制1像素的线
一、Point Vs PixeliOS中当我们使用Quartz,UIKit,CoreAnimation等框架时,所有的坐标系统采用Point来衡量。系统在实际渲染到设置时会帮助我们处理Point到Pixel的转换。这样做的好处隔离变化,即我们在布局的事后不需要关注当前设备是否为Retina,直接按照一套坐标系统来布局即可。实际使用中我们需要牢记下面这一点:转载 2015-08-18 11:32:12 · 728 阅读 · 0 评论 -
Grand Central Dispatch 基础教程:Part 1/2
原文 Grand Central Dispatch Tutorail for Swift: Part 1/2原文作者:Bjrn Olav Ruud译者:Ethan Joe尽管Grand Central Dispatch(以下简称为GCD)已推出一段时间了,但并不是所有人都明白其原理;当然这是可以理解的,毕竟程序的并发机制很繁琐,而且基于C的GCD的API对于Swif转载 2015-08-18 12:32:58 · 473 阅读 · 0 评论 -
iOS开发之使用Runtime给Model类赋值
作者:青玉伏案本篇博客算是给网络缓存打个基础吧,本篇博客先给出简单也是最容易使用的把字典转成实体类的方法,然后在给出如何使用Runtime来给Model实体类赋值。本篇博客会介绍一部分,主要是字典的key与Model的属性名相同时,使用Runtime来进行赋值,下篇博客会给出字典key的值和Model的名字不同时的解决方案,并给出使用Runtime打印实体类属性值的方式。iOS转载 2015-08-17 20:35:54 · 530 阅读 · 0 评论 -
iOS7中计算UILabel中字符串的高度
iOS7中计算UILabel中字符串的高度iOS7中出现了新的方法计算UILabel中根据给定的Font以及str计算UILabel的frameSize的方法.本人提供category如下:UILabel+StringFrame.h//// UILabel+StringFrame.h// LabelHeight//// Copyright (c)转载 2015-07-21 11:48:10 · 416 阅读 · 0 评论 -
说说ReactiveCocoa 2
说说ReactiveCocoa 2ReactiveCocoa是Github开源的一款cocoa FRP 框架,我在之前的文章里有过介绍(当时还是1.x版本,2.x版本有了新的变化,API也有部分不兼容) 这里再简单地提一下。Native app有很大一部分的时间是在等待事件发生,然后响应事件,比如等待网络请求完成,等待用户的操作,等待某些状态值的改变等等,等这些事件发生后,转载 2015-07-20 12:29:42 · 636 阅读 · 0 评论 -
关于block使用的5点注意事项
1、在使用block前需要对block指针做判空处理。不判空直接使用,一旦指针为空直接产生崩溃。if (!self.isOnlyNet) { if (succBlock == NULL) { //后面使用block之前要先做判空处理 return; } id data = [NSKeyedUnarchiver unarchiveO转载 2015-07-20 13:24:22 · 561 阅读 · 0 评论 -
iOS 开发常用宏
#define NavigationBar_HEIGHT 44#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)#define SAFE_RELEASE(x) [x release];x=nil原创 2015-07-14 19:04:23 · 608 阅读 · 0 评论 -
设置UILabel 两端对齐
遇到这个问题, 本来想找现成的方案,结果半天没合适的 于是自己搞了一个,其实挺简单,给需要的朋友:直接上代码- (void)viewDidLoad { [super viewDidLoad]; NSString * string = @"你好"; [self conversionCharacterInterval:4 current:string withLabel:sel原创 2015-07-28 17:09:36 · 5170 阅读 · 0 评论 -
从JSONModel看Objective-C的反射机制
移动互联时代,JSON作为一种数据传输格式几乎随处可见。作为iOS开发者,收到一串JSON字符串要怎么处理?我想多数情况下是需要将它转成自定义的NSObject对象再使用,对于这个转换的过程,大部分人是这么做的:1234567NSDictionary* json = (fetch from Internet) ...User* user=[[转载 2015-08-08 18:48:32 · 546 阅读 · 0 评论 -
RunLoop学习笔记,从CF层面了解由于CFRunLoopMode机制
RunLoop学习笔记,从CF层面了解由于CFRunLoopMode机制iOS程序ScrollView的滑动为何如此平滑的原因。还有介绍AFNetworking如何单独发起一个global thread内置runloop达到不占用主线程又不耗CPU资源的。简介简单的说run loop是事件驱动的一个大循环,如下代码所示int main(int argc, cha转载 2015-08-09 12:00:26 · 2260 阅读 · 0 评论 -
后台定位上传的代码实践
前言之前的文章说过 我现在做的是LBS定位的社交APP 其中主要的一个功能就是能够实时定位社交圈中各个成员的位置 后台实时上传位置则是非常重要的一个技术点 接下来就来说说我关于这方面的实践经验需求先来看看实现这个功能的具体需求是什么 由于我们是实时定位的生活类社交APP 所以我们需要做到一下几点1. 如果用户的位置在持续变化 则隔一段时间上报一次转载 2015-08-10 13:39:31 · 676 阅读 · 0 评论 -
iOS定位原理和使用建议
看到很多网友讨论iOS设备定位的问题,这里将我们所了解的关于iPhone、iPad、iPod等的定位原理做详细的介绍,希望能为大家增加知识,减少误区,更好地使用iOS设备。介绍之前,先声明一下关于地图加加的“偏移修正”功能,地图加加可以对齐中国地区(地点、线路和照片的)坐标和中国地图之间的偏移,这个是我国测绘法规要求的一个数学意义的偏移,每个地方的偏移是固定的,法定的,和当前定位的方式、定转载 2015-07-17 17:35:44 · 786 阅读 · 0 评论 -
强制去除xcode的编译警告
使用#pragma clang diagnostic ignored语法来强制去除xcode的编译警告,代码举例如下:1234#pragma clang diagnostic push#pragma clang diagnostic ignored "-Warc-bridge-casts-d原创 2015-07-22 12:14:24 · 1219 阅读 · 0 评论 -
Pods was rejected as an implicit dependency for 'libPods.a' because its architectures 'x86_64' didn
引入cocoaPods后,第一次编译报这个错误Pods was rejected as an implicit dependency for 'libPods.a' because its architectures 'x86_64' didn't contain all required architectures 'i386'查了些资料,在网上有一种解决方法是去设置pod工原创 2015-07-04 10:34:39 · 9720 阅读 · 0 评论 -
为GCD队列绑定NSObject类型上下文数据-利用__bridge_retained(transfer)转移内存管理权
更新下面评论的好友“@Jim”给了种新的思路,就是在清除context的函数里面,用“_bridge_transfer”转换context,把context的内存管理权限重新交给ARC,这样,就不用显式调用“CFRelease”了。如下:123456void cleanStaff(void *con转载 2015-08-18 12:18:10 · 548 阅读 · 0 评论 -
Grand Central Dispatch 基础教程:Part 2/2
原文 Grand Central Dispatch Tutorial for Swift: Part 2/2原文作者:Bjrn Olav Ruud译者:Ethan Joe欢迎来到Grand Central Dispatch系列教程的第二部分!在教程的第一部分,你学到了一些关于并发,线程及GCD工作原理的知识。你通过并用dispatch_barrier_asy转载 2015-08-18 12:33:43 · 527 阅读 · 0 评论 -
iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求。 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对in转载 2017-04-28 15:40:55 · 3049 阅读 · 0 评论 -
Objective-c 自定对象 转 JSON
#pragma mark - NSObject to JSON -static NSDateFormatter *reverseFormatter;- (NSDateFormatter *)getReverseDateFormatter { if (!reverseFormatter) { NSLocale *locale = [[NSLocal原创 2017-10-19 15:17:05 · 2758 阅读 · 0 评论 -
iOS Crash修复:weak_register_no_lock crash 崩溃
崩溃的栈为:Thread 0 Crashed:0 objc_crashlogPKc 1 __objc_fatal 2 _weak_register_no_lock 3 _objc_storeWeak12345一般在dealloc中取weak self会引起这个现象- (void)dealloc{ __weak __typeof(self)wself = self;原创 2018-01-22 15:37:16 · 1133 阅读 · 0 评论 -
iOS Crash修复:HTTPRequestParserClient::~HTTPRequestParserClient()
目前发现是SDWebimage 库的内存管理问题,更新到新版本可以解决~原创 2018-01-22 20:29:56 · 407 阅读 · 1 评论 -
GCD 信号量控制并发 (dispatch_semaphore)
当我们在处理一系列线程的时候,当数量达到一定量,在以前我们可能会选择使用NSOperationQueue来处理并发控制,但如何在GCD中快速的控制并发呢?答案就是dispatch_semaphore,对经常做unix开发的人来讲,我所介绍的内容可能就显得非常入门级了,信号量在他们的多线程开发中再平常不过了。 信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待。当一个信号量...原创 2018-03-07 17:05:17 · 231 阅读 · 0 评论 -
-[AVComposition URL]: unrecognized selector sent to instance
[manager requestAVAssetForVideo:PHAsset options:videoRequestOptions resultHandler:^(AVAsset * avasset, AVAudioMix * audioMix, NSDictionary * info) {}];...原创 2018-04-04 20:55:52 · 1939 阅读 · 0 评论 -
addScriptMessageHandler 引起WKWebView 循环引用问题
使用WKWebView的时候,如果想要实现JS调用OC方法,除了拦截URL之外,还有一种简单的方式。那就是利用WKWebView的新特性MessageHandler来实现JS调用原生方法。MessageHandler 是什么?WKWebView 初始化时,有一个参数叫configuration,它是WKWebViewConfiguration类型的参数,而WKWebViewConfiguratio...原创 2018-07-09 14:46:11 · 6260 阅读 · 2 评论 -
一个面试题:self和super的区别
这几天面试好几个同学,居然都说不清楚这个问题,于是发个微博记录下:self和super区别self是关键字代表当前方法的调用者 如果是类方法:代表当前类如果是对象方法:代表当前类的对象super编译器指令[self message]和[super message]的实现其实不管是self还是super真正调用的对象都是一样的,只是查找方法的位置不一样,self是从当前类结构中开始查找,super是...原创 2018-07-03 15:59:28 · 2032 阅读 · 0 评论 -
iOS内存管理:基本概念与原理
在Objective-C的内存管理中,其实就是引用计数(reference count)的管理。内存管理就是在程序需要时程序员分配一段内存空间,而当使用完之后将它释放。如果程序员对内存资源使用不当,有时不仅会造成内存资源浪费,甚至会导致程序crach。我们将会从引用计数和内存管理规则等基本概念开始,然后讲述有哪些内存管理方法,最后注意有哪些常见内存问题。memory managem转载 2017-02-13 19:09:52 · 4805 阅读 · 0 评论 -
Objective-C 枚举 中位运算 的使用
前言Enum,也就是枚举,从C语言开始就有了,C++、Java、Objective-C、Swift这些语言,当然都有对应的枚举类型,功能可能有多有少,但是最核心的还是一个—-规范的定义代码中的状态、选项等“常量”。Item 5 - Use Enumerations for States, Options, and Status Codes本节的内容就是如何正确的使用枚举。原创 2017-02-10 19:00:46 · 2069 阅读 · 0 评论 -
iOS 扩大 UIButton 的点击范围
CGRectInset CGRectoffset UIEdgeInsetsInsetRect 这三个函数的使用情况//CGRectInset 将原来的矩形放大或者缩小,正表示缩小,-表示放大。CGRect rect= CGRectMake(20, 50, 100, 80); CGRect rect1=CGRectInset(rect, -10, 20); NSLog(@"%@",p(rec原创 2016-09-26 14:01:36 · 4148 阅读 · 0 评论 -
Objective-C Associated Objects 的实现原理
我们知道,在 Objective-C 中可以通过 Category 给一个现有的类添加属性,但是却不能添加实例变量,这似乎成为了 Objective-C 的一个明显短板。然而值得庆幸的是,我们可以通过 Associated Objects 来弥补这一不足。本文将结合 runtime 源码深入探究 Objective-C 中 Associated Objects 的实现原理。在阅读本转载 2015-08-18 10:55:53 · 616 阅读 · 0 评论 -
关于NSArray 排序的问题
第一种,利用数组的sortedArrayUsingComparator调用 NSComparator ,obj1和obj2指的数组中的对象NSComparator cmptr = ^(id obj1, id obj2){ if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)N原创 2015-09-07 15:19:32 · 552 阅读 · 0 评论 -
GitHub 上Top100 的 Objective-C 项目
本文来自Github,主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况.项目名称项目信息1. AFNetworking作者是 NSHipster 的博主, iOS 开发界的大神级人物, 毕业于卡内基·梅隆大学, 开源了许多牛逼的项目, 这个便转载 2016-05-12 15:53:22 · 978 阅读 · 0 评论 -
iOS 开发中常用编码格式转化
常见的字符编码格式:各种字符编码介绍及关系ASCII :(American Standard Code for Information Interchange,美国标准信息交换代码) 百度百科Unicode:Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 百度百科UTF-8原创 2016-05-13 18:40:57 · 3932 阅读 · 0 评论 -
weakself的一种写法
前言在不久前看AFNetworking的源码时候发现了这么一句:12345678910// 不知道这行代码的使用场景的同学你该去自习看看ARC的注意事项和Block的使用了// AFNetworking的写法__weak __typeof(&*self)weakSelf = self;// 我之前一直这么写的__weak __转载 2016-09-06 14:52:29 · 1175 阅读 · 0 评论 -
iOS之在webView中引入本地html,image,js,css文件的方法
项目需求最近开发的项目,需要一个webView,同时这个webView会需要引入一些项目中的资源:一个本地的html文件,作为webView的模板两张loading图片,在图片未加载的时候进行占位jquery.js,scrollLoading.js 也是本地的,实现滚动加载图片功能然后就开始了漫长的Google历程。在webView中引入本地的html文件这转载 2016-09-23 17:55:24 · 6875 阅读 · 0 评论 -
iOS开发 适配iOS10以及Xcode8
一、证书管理用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了。)QQ20160913-8.png-96.9kB下面我来说说可能会出现的问题:1.Xcode未设置开发者账号情况下的原创 2016-09-24 19:37:19 · 627 阅读 · 0 评论