![](https://img-blog.csdnimg.cn/20191225154355359.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Oc
文章平均质量分 69
Oc相关知识点
ai_pple
这个作者很懒,什么都没留下…
展开
-
GCD理解-Group、Queue、Concurrent、Serial、async、sync
GCD理解GCDDispatch Queue串行队列(Serial Dispatch Queue)并发队列(Concurrent Dispatch Queue)dispatch_queue_create系统提供的Dispatch Queue为创建的Dispatch Queue创建优先级延迟执行(dispatch_after)Dispatch Groupdispatch_barrier_asyncdispatch_sync使用场景:dispatch_applydispatch_suspend/dispatch原创 2020-06-27 14:49:18 · 439 阅读 · 0 评论 -
LLVM开发插件以及遇到问题
LLVM理解什么是LLVM传统的编译器架构Clang什么是Clang相比于GCC,Clang具有如下优点Oc源文件的编译过程词法分析语法树-ASTLLVM IR开始制作源码下载应用与实践clang插件开发-插件目录clang插件开发-Hack Xcodeclang插件开发- Xcode 配置理解什么是LLVMLLVM项目是模块化、可重用的编译器以及工具链技术的集合创始人就说Swift之父LLVM本身不是首字母缩略词,它是项目的全名传统的编译器架构GCC、LLVM、Clang原创 2020-05-28 18:04:27 · 998 阅读 · 0 评论 -
runtime使用三:自实现kvo
一:kvo 主要原理:当我们调用系统的addObserver: forKeyPath options: context:方法时候,系统在运行时为我们创建了一个NSKVONotifying_XXX类,该类属于XXX类的子类,这个子类重写了我们要监听的那个属性的set方法,额外的去调用了observeValueForKeyPath: ofObject: change: context:,我们可以写...原创 2019-05-14 18:44:10 · 217 阅读 · 0 评论 -
runtime使用一:利用runtime实现归解档
建立一个类person,使用runtime实现该类的归解档person.h@interface Person : NSObject <NSCoding,NSSecureCoding>@property (nonatomic, strong) NSString *name;@endperson.m#import "Person.h"#import <objc/r...原创 2019-05-09 11:12:25 · 225 阅读 · 0 评论 -
各种小问题总结
1:xcode工程文件乱序选中文件夹、右键–&amp;amp;amp;gt;sort by name(sort by type)2.编译报错:Illegal redeclaration of property in class extension ‘XXXXTableViewCell’ (attribute must be ‘readwrite’, while its primary must be ‘readonl...原创 2019-03-27 00:52:48 · 1204 阅读 · 0 评论 -
像、点、开发中使用的宽度、image压缩体积、逻辑分辨率、设备分辨率、point、pixel
引子:- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray&amp;amp;amp;amp;lt;UIImage *&amp;amp;amp;amp;gt; *)photos sourceAssets:(NSArray *)assets isSelectOri...原创 2019-02-18 11:53:10 · 365 阅读 · 0 评论 -
支付宝微信支付全本地写法和与服务器沟通方法
首先集成支付宝,微信,申请各自该申请的东西。这里不重复主要包含以下东西: XZLPayBusiness要导入的头文件包含以下内容 1.支付宝全本地支付+ (void)doAPPay:(NSString *)money { NSString *filePath = [[NSBundle mainBundle] pathForResource:@"2048"ofType:...原创 2018-07-23 15:26:34 · 1242 阅读 · 0 评论 -
保存图片到本地,查看本地图片,递归实现scrollView的无限循环滚动,文字横向渐变效果,autoLayout
//// ViewController.m// DiGui//// Created by test on 16/3/28.// Copyright © 2016年 Zhou. All rights reserved.//#pragma mark —————————— AutoLayout----添加两个约束实现imageView居中,并设置宽高比为1:2。#import原创 2016-03-29 17:38:31 · 862 阅读 · 0 评论 -
webView 无限进入,点击返回,返回到网页的上一个页面,当无返回时,返回到自己的页面
-(void)backToBefore{ // 点击返回时,返回操作的上一页 if (_webView.canGoBack) { [_webView goBack]; } else { [super backToBefore]; [_web原创 2016-03-28 17:18:12 · 770 阅读 · 0 评论 -
动态计算_shortLabel的文字宽度
// 动态计算_shortLabel的文字宽度 CGSize size = [_shortLabel.textsizeWithAttributes:[NSDictionarydictionaryWithObjectsAndKeys:_shortLabel.font,NSFontAttributeName,nil]]; NSLog(@"%f %f",si原创 2016-03-24 18:22:21 · 695 阅读 · 0 评论 -
动画—Core Animation初步学习五:转场动画_从一个场景以动画的形式过渡到另一个场景
转场动画就是从一个场景以动画的形式过渡到另一个场景。转场动画的使用一般分为以下几个步骤:1.创建转场动画2.设置转场类型、子类型(可选)及其他属性3.设置转场后的新视图并添加动画到图层下表列出了常用的转场类型(注意私有API是苹果官方没有公开的动画类型,但是目前通过仍然可以使用):动画类型说明对应常量是否支持方向设置转载 2016-03-25 14:07:34 · 1816 阅读 · 0 评论 -
动画—Core Animation初步学习四:动画组,一系列动画的组合,能构建出复杂的动画效果
在此贴上我学习的博客 http://www.cnblogs.com/kenshincui/p/3972100.html#autoid-3-2-0 动画组实际开发中一个物体的运动往往是复合运动,单一属性的运动情况比较少,但恰恰属性动画每次进行动画设置时一次只能设置一个属性进行动画控制(不管是基础动画还是关键帧动画都是如此),这样一来要做一个复合运动的动画就必须创建原创 2016-03-25 11:17:55 · 376 阅读 · 0 评论 -
动画—Core Animation初步学习三:关键帧动画
在此贴上我的学习博客http://www.cnblogs.com/kenshincui/p/3972100.html#autoid-3-1-0 关键帧动画就是在动画控制过程中开发者指定主要的动画状态,至于各个状态间动画如何进行则由系统自动运算补充(每两个关键帧之间系统形成的动画称为“补间动画”),这种动画的好处就是开发者不用逐个控制每个动画帧,而只要关心几个关键帧的状态即可。 关原创 2016-03-24 16:05:05 · 848 阅读 · 0 评论 -
动画—Core Animation初步学习二: 基础动画
在开发过程中很多情况下通过基础动画就可以满足开发需求,前面例子中使用的UIView代码块进行图像放大缩小的演示动画也是基础动画(在iOS7中UIView也对关键帧动画进行了封装),只是UIView装饰方法隐藏了更多的细节。如果不使用UIView封装的方法,动画创建一般分为以下几步:1.初始化动画并设置动画属性2.设置动画属性初始值(可以省略)、结束值以及其他动画属性3.给图原创 2016-03-24 10:34:07 · 343 阅读 · 0 评论 -
动画—Core Animation初步学习一:Core Animation动画介绍
在此贴上我学习的博客:http://www.cnblogs.com/kenshincui/p/3972100.html#coreanimation 在iOS中实现一个动画相当简单,只要调用UIView的块代码即可实现一个动画效果 //// KCMainViewController.m// Animation//// Created by Kens原创 2016-03-24 09:46:02 · 270 阅读 · 0 评论 -
Swift入门一:记Swift与Oc的一些语言区别
1:但是初步看Swift,发现Swift只有var 和 let两种 2:问度娘发现Swift中var表示变量,let表示常量2. Swift写一个string值,不需要@也不需要;(分号), 如var str = “hello,world”3:Swift输出函数用println(str)str是“hello,world”4:Swift填icon只需要一部,打开Assets.xcas原创 2016-03-09 15:51:00 · 409 阅读 · 0 评论 -
动画—CALayer的初步学习四:CALayer绘图—使用自定义图层绘图
学习博客原文地址:http://www.cnblogs.com/kenshincui/p/3972100.html 先粘上它的代码和文字说明 在自定义图层中绘图时只要自己编写一个类继承于CALayer然后在drawInContext:中绘图即可。同前面在代理方法绘图一样,要显示图层中绘制的内容也要调用图层的setNeedDisplay方法,否则drawInContext原创 2016-03-23 17:07:11 · 605 阅读 · 0 评论 -
动画—CALayer的初步学习三:CALayer绘图—通过代理方法绘图扩展1.2(带阴影效果的绘图和图层的形变)(学会从博客上自学)
扩展1--带阴影效果的圆形图片裁切如果设置了masksToBounds=YES之后确实可以显示图片圆角效果,但遗憾的是设置了这个属性之后就无法设置阴影效果。因为masksToBounds=YES就意味着外边框不能显示,而阴影恰恰作为外边框绘制的,这样两个设置就产生了矛盾。要解决这个问题不妨换个思路:使用两个大小一样的图层,下面的图层负责绘制阴影,上面的图层用来显示图片。 上代码:原创 2016-03-23 15:24:56 · 317 阅读 · 0 评论 -
动画—CALayer的初步学习二:CALayer绘图—通过代理方法绘图(学会从博客上自学)
最简单的通过更改CALayer的属性制作动画现在应该已经懂他的原理了,这就是隐身动画属性 drawRect:方法是由UIKit组件进行调用,因此里面可以使用一些UIKit封装的方法进行绘图,而直接绘制到图层的方法由于并非UIKit直接调用因此只能用原生的Core Graphics方法绘制。 图层绘图有两种方法,不管使用哪种方法绘制完必须调用图层的setNeedDispla原创 2016-03-23 13:47:05 · 344 阅读 · 0 评论 -
动画—CALayer的初步学习一:CALayer属性—隐式动画(学会从博客上自学)
在此先贴上我学习的参考博客:http://www.cnblogs.com/kenshincui/p/3972100.html CALayer基本介绍: 在iOS中CALayer的设计主要是了为了内容展示和动画操作,CALayer本身并不包含在UIKit中,它不能响应事件。由于CALayer在设计之初就考虑它的动画操作功能,CALayer很多属性在修改时都能形成动原创 2016-03-23 10:20:50 · 355 阅读 · 0 评论 -
Mac储存空间系统容量过大问题
Mac储存空间系统容量过大问题mac使用时间久了后,储存空间会变很小,我们可以通过点击下图的管理来删掉一些比如废纸篓、文稿、应用程序等不用的文件,但有时候系统显示过大甚至到100多G的情况这种方法就不能删除它的资源,那怎么看它都有哪些需要删除呢?查看所有根目录下文件大小打开命令行工具,执行:du -sh *会看到如下结果找到占比较大的文件,拿Library为例cd Library...原创 2019-12-20 14:42:29 · 1468 阅读 · 0 评论 -
优雅修改iOS13的modalPresentationStyle的默认值,一处修改即可
iOS13的modalPresentationStyle默认为UIModalPresentationAutomatic,要想修改,需要手动设置vc.modalPresentationStyle = UIModalPresentationFullScreen;但是这个修改需要在每个presentViewController:animated:completion:之前加上这样一句代码,需要改动多个...原创 2019-10-08 11:30:54 · 7595 阅读 · 0 评论 -
苹果Xcode帮助文档阅读指南-https://developer.apple.com/library/ios/navigation/
苹果Xcode帮助文档阅读指南一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用。从论坛、微博等等地方看到的初学者提出的问题,也暴露出他们不知道很多他们的疑惑其实在文档里面写的非常清楚。而有时候当他们想从文档去找解决方案的时候,也往往找不到。或者有些人意识到了,阅读文档是学习的好办法,但是不得要领。...转载 2016-05-04 11:33:22 · 826 阅读 · 0 评论 -
MVC详细精确理解
MVC(Model View Controller)模型(model)-视图(view)-控制器(controller):MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新转载 2016-04-08 10:39:19 · 486 阅读 · 0 评论 -
iOS8 【xcode6以上中添加pch全局引用文件】
前沿:xcode6中去掉了pch,为了一些琐碎的头文件引用,加快了 编译速度!xcode6之前的版本建项目就自动添加了是这样的:【xcode6中添加pch全局引用文件】" title="iOS8 【xcode6中添加pch全局引用文件】" style="margin:0px; padding:0px; border:0px; list-style:none">xcode6后的版转载 2016-04-07 18:01:53 · 383 阅读 · 0 评论 -
关于git的一些命令总结
1.Finder中显示隐藏目录和文件 / 显示.git隐藏文件defaults write com.apple.finder AppleShowAllFiles TRUE回车 输入killall Finder如果想要隐藏,将TRUE 改为FALSE2. git了一个项目在本地仓库里,然后又把这个东西copy到了另外一个目录,在另外一个目录里面做了好多修改现原创 2016-03-28 14:22:38 · 465 阅读 · 0 评论 -
IOS APP上线流程,第一次上线和提交更新版本,超详细,详细的不能再详细了
不管第一次还是第二次APP上线都需要三样东西:开发者证书,appID,描述文件 他们分别长成这个样子: 开发者证书: appID:appID主要是链接应用程序的一个唯一东西,比如迭代版本,他如何判断是迭代版本呢,也就是靠这个appID,所以这里说明了一个问题:迭代版本的appID是不能变得。配置文件: 三者关系:开发者证书需要双击安装在电脑上,appID是唯一标原创 2016-03-22 09:37:12 · 10200 阅读 · 2 评论 -
二维码生成(CIFilter生成二维码,清晰度高的二维码,自定义颜色的二维码,带logo的二维码)
效果如下:ViewController.h1 #import 2 @interface ViewController : UIViewController3 @property (strong, nonatomic) IBOutlet UIImageView *imgVQRCode;4 5 @endViewController.m 1 #im转载 2016-03-21 15:04:22 · 3474 阅读 · 0 评论 -
iOS 7之后,使用CIFilter生成二维码图片
在之前的博客中,说CIFilter可以制作滤镜效果,现在我又发现CIFilter可以制作二维码,CIFilter还是很强大的! 不过使用原生的CIFilter需要在iOS7之后,所以以后生成二维码,扫描二维码可以不需要第三方库,想ZBar,ZXing,libqrencode这些了 运用CoreImage的学习二中提到的方法呗,找到那个滤镜名字:CIQRCodeGenerato原创 2016-03-21 10:56:07 · 646 阅读 · 0 评论 -
CoreImage的初步学习二
趁着还有一点时间,把初步学习一中的一点疑问解决掉去,经过了初步学习一,现在看那个学习博客关于CIFilter的介绍已经分分钟看懂了来:学习博客关于CIFilter我就以下总结:[CIFilterfilterNamesInCategory:kCICategoryBuiltIn];//搜索属于 kCICategoryBuiltIn类别的所有滤镜名字,返回一个数组;[CIFilter原创 2016-03-10 17:25:05 · 537 阅读 · 0 评论 -
CoreImage的初步学习—
初步学习CoreImage,我学习的博客点这里,首先映入我眼的就是CIImage了,他和UIImage长得好像,于是想到了UIImage的三种创建方式这里拷贝一下我从博客看到的四种方式:1.CIImage*image=[CIImage imageWithContentsOfURL:myURL]; 2.CIImage*image=[CIImage imageWithData原创 2016-03-10 14:32:12 · 510 阅读 · 1 评论 -
runtime使用二:使用runtime实现方法交换(Method Swizzling)
实际开发过程中,我们可能需要这样的需求: 想要为一个系统方法或者自定义方法加一些判断条件,但是重写系统方法(或自定义方法)再在每个调用的地方修改再费时费力,而且效果不美好,很容易有遗漏等情况所以这时候我们就需要用到runtime的方法交换,照常调用系统方法或自定义方法,但是运行时实际走的是我们交换了之后的那个方法现在我们来看他的实现调用处:#import "ViewController.h...原创 2019-05-13 16:20:21 · 365 阅读 · 0 评论 -
Block学习二:所有知识点总结
首先问一个问题,以下代码会打印什么? #import "ViewController.h"//#import "XZLTextField.h"@interface ViewController ()@endstatic int staticGloblVal = 10;int globlVal = 10;@implementation ViewController- (...原创 2019-05-12 22:35:54 · 131 阅读 · 0 评论 -
Block学习一:Block的实质
这篇主要让我们理解Block编译之后变成了什么我们先创建一个类ABlock 只包含简单的带有Block的代码,如下:- (void)method { void (^stackBlock)(void) = ^{ NSLog(@"this is a block"); }; stackBlock();}然后我们打...原创 2019-05-06 18:53:27 · 222 阅读 · 0 评论 -
ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
Objective C 的 Block 是一个很实用的语法,特别是与GCD结合使用,可以很方便地实现并发、异步任务。但是,如果使用不当,Block 也会引起一些循环引用问题(retain cycle)—— Block 会 retain ‘self’,而 ‘self‘ 又 retain 了 Block。因为在 ObjC 中,直接调用一个实例变量,会被编译器处理成 ‘self->theVar’,’转载 2016-05-28 23:14:26 · 557 阅读 · 0 评论 -
UINavigationBar导航栏相关设置
设置导航颜色[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:1]];[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];设置导航文字颜色[转载 2016-04-06 17:57:23 · 357 阅读 · 0 评论 -
UIButton的setImageEdgeInsets和setTitleEdgeInsets
当一个button有图片和文字的时候需要用到setTitle和setImage,默认情况下会图片在左,文字在右显示,然后图片和文字作为整体内容在button的正中间显示。 要通过改变图片和文字的位置就需要用到setImageEdgeInsets和setTitleEdgeInsets,在此之前,介意讲button的contentHorizontalAlignment设置为居左,content原创 2016-03-21 10:00:59 · 665 阅读 · 0 评论 -
imageNamed/ imageWithContentsOfFile /imageWithData 的区别
imageNamed1) UIImage *image = [UIImage imageWithNamed:ImageName]; 2) 在application bundle的顶层文件夹寻找相应名字的图象,找到后系统会把图像Cache到内存(对于同一个图像系统只会把它Cache到内存一次),如果再次要用同一图像,图像将从内部缓存而不是从资源中加载,这对于图像的重复利用是非常有优势转载 2016-03-10 11:04:32 · 739 阅读 · 0 评论