
【iOS开发 深入浅出学习系列】
有关iOS方面技术的实践,以及真实案例中遇到的问题及其解决方法
Human陈思宇
学习
展开
-
iOS用copy修饰Block
Block的三个类型:1._NSConcreteGlobalBlock,全局的静态block,不会访问外部的变量。就是说如果你的block没有调用其他的外部变量,那你的block类型就是这种。2._NSConcreteMallocBlock 保存在堆中的 block,当引用计数为 0 时会被销毁。3._NSConcreteStackBlock 保存在栈中的 bl原创 2016-12-12 14:57:05 · 1572 阅读 · 0 评论 -
__weak 与 __block的区别理解
__weak 与 __block的区别理解__block对象在block中是可以被修改、重新赋值的如果局部变量是数组或者指针的时候只复制这个指针,两个指针指原创 2016-12-14 09:22:39 · 492 阅读 · 0 评论 -
weak和assign的区别
weak和assign都是引用计算不变,两个的差别在于,weak用于object type,就是指针类型,而assign用于简单的数据类型,如int BOOL 等。assign看起来跟weak一样,其实不能混用的,assign的变量在释放后并不设置为nil(和weak不同),当你再去引用时候就会发生错误,崩溃,EXC_BAD_ACCESS.原创 2016-12-14 16:50:29 · 1020 阅读 · 0 评论 -
NSSting由中文转换为拼音字符串的正确做法
最近做项目的时候需要用到这个功能,网上比较修行的第三方框架,已经在iOS10中转换失败,以下是一种成功的做法,有更好的方法可以提出- (NSString *) phonetic:(NSString*)sourceString {NSMutableString *source = [sourceString mutableCopy];CFStringTransform((__bridge原创 2016-12-14 16:01:51 · 732 阅读 · 0 评论 -
MethodSwizzling
利用OC的Runtime原理,我们可以实现MethodSwizzling把一个我们未知其实现原理的方法进行扩展或者替换掉+ (void)load{// 源方法--原始的方法// 目的方法--我们自己实现的,用来替换源方法 static dispatch_once_t onceToken; // MethodSwizzling代码只需要在类加载时调用一次,并且需要线程原创 2016-12-04 16:42:08 · 538 阅读 · 0 评论 -
iOS类别可以扩展类的属性
一般来说类目用于扩展类的方法,不可以扩展属性,但是通过runtime是可以实现类属性的扩展/** button的name */@property (nonatomic,copy) NSString *name;static void *strKey = &strKey;- (void)setName:(NSString *)name{ objc_setAssociatedOb原创 2016-11-20 15:33:52 · 1175 阅读 · 0 评论 -
使用自制.a静态库报错Unknown class XXViewController in Interface Builder file的解决方法
这个报错其实一般是与你的资源文件IB文件无关,在你需要使用到这个库的Target的”Build Setting”–>“Other Link Flags”中加上 -all_load 和 -ObjC 这两个标识编译立刻通过原创 2016-11-24 10:25:53 · 522 阅读 · 0 评论 -
iOS KVO的运用理解
KVO,即key-value-observing,利用一个key来找到某个属性并监听其值得改变。Key-value observing is a mechanism that allows objects to be notified of changes to specified properties of other objects.具体操作如下://让对象b监听对象a的name属原创 2016-11-17 09:52:36 · 485 阅读 · 0 评论 -
iOS KVC运用理解
KVC也就是key-value-coding,即键值编码,通常是用来给某一个对象的属性进行赋值特点是可以对类的私有属性进行赋值[p setValue:@100 forKeyPath:@"weight"];另外可以在字典构建模型中,简化操作- (instancetype)initWithDict:(NSDictionary *)dict{ if (self = [super原创 2016-11-17 09:16:30 · 575 阅读 · 0 评论 -
ios模拟器不弹出解决方法
在xcode6中, 模拟器中的键盘和电脑的键盘可以进行绑定or解除绑定,打开模拟器,在最上面的菜单栏中,选择hardware,然后选择keyboards,有三个选项, 依次都勾选就行了。(注意:第三个选项在点击之后,实际已勾上了,但显示未勾上,但实际已经奏效了,这可能是xcode6的一个显示上的bug)原创 2015-05-27 09:36:17 · 4329 阅读 · 1 评论 -
IOS Layer 简析
第一部分:简介一、什么是CALayer * 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。 * 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个层。 * 在创建UIView对象时,UIView内部会自动创建一个层(即CALayer对象)转载 2016-11-01 15:28:25 · 8697 阅读 · 0 评论 -
iOS - 中介者模式
中介者模式:用应该中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们的交互#import @class AbstractColleague;@protocol ColleagueDelegate @optional/** * colleague对象的交互 * * @param event Collea原创 2016-11-02 15:57:19 · 371 阅读 · 0 评论 -
CoreImage 使用
•CoreImage是苹果公司为了简化图片处理的难度而开发出来的类库。•随着iOS版本升级以及硬件性能的不断提升,CoreImage将支持越来越多的滤镜。•大部分的滤镜都很容易使用。// 0. 导入CIImage图片 CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"demo"原创 2016-11-02 16:04:42 · 366 阅读 · 0 评论 -
CoreImage滤镜的组合
•不同的滤镜可以组合在一起使用。•可以动态的修改滤镜组合中单个滤镜的参数来实现一种动态调整的效果。 // 0. 导入CIImage图片 CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"demo"]]; // 1. 创建出Filter滤镜 CIFilter *原创 2016-11-03 09:17:14 · 349 阅读 · 0 评论 -
OpenGLES下进行渲染
在OpenGLES下进行滤镜的渲染可以提高效率。如果需要实时查看多个滤镜动态渲染的效果,使用OpenGLES是一个好的选择@interface ViewController ()@property (nonatomic, strong) GLKView *glkView; // 渲染用的buffer视图@property (nonatomic, strong) CIFi原创 2016-11-03 10:16:27 · 1215 阅读 · 0 评论 -
Xcode8运行swift项目报错解决方法
swift的更新,导致旧的swift项目会有报错,报错如下解决方法如下:1.将swift language verson属性值设为NO2.根据上面报错的提示,即(edit->convert->to current....)进行转化,注意:选择3.0转换,之前我选择2.3依然出错3.转换完依然有错误一般为方法名称在swift新版本已变更,跟随变更即可原创 2016-11-03 14:18:23 · 2052 阅读 · 0 评论 -
iOS应用上下出现黑边解决方法
老项目运行时会出现上下有黑边的情况只需要new file- 创建一个lacunch的sb,并选择为启动页面即可原创 2016-11-03 14:28:51 · 2242 阅读 · 0 评论 -
OC效率最高的排序方法
//////////处理数组////////// NSArray *arrayM = @[@"1",@"2",@"3",@"4"]; for (id obj in arrayM) { NSLog(@"%@",obj); } //////////处理字典////////// NSDictionary *dictM = @{@"1":@"one原创 2016-11-05 17:24:00 · 890 阅读 · 0 评论 -
CALayer的阴影添加以及抖动效果构建
#define angle2Radian(angle) ((angle)/180.0*M_PI) CALayer *cyanLayer = [CALayer layer]; cyanLayer.frame=CGRectMake(100, 100, 200, 200); cyanLayer.backgroundColor=[UIColor redColor].CGColor;原创 2016-11-07 10:28:58 · 746 阅读 · 0 评论 -
iOS 旋转动画
CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ];原创 2016-11-07 10:39:35 · 323 阅读 · 0 评论 -
iOS球形旋转动画
CGPathRef aPath; aPath = CGPathCreateWithEllipseInRect(CGRectMake(0, 0, 200, 200), NULL); [CATransaction begin]; CAKeyframeAnimation * arcAnimation = [CAKeyframeAnimation animatio原创 2016-11-07 11:01:39 · 2291 阅读 · 0 评论 -
关于NSURLSession内存泄露解决方案
前些天,在使用NSURLSession的时候发生了严重的内存泄露问题,主要是使用Xcode里面的Leak工具发现的,然后查看网上解决方法说,必须加入以下代码- (void)dealloc { [self.session invalidateAndCancel]; } 查看Leak,解决未果,经试验,必须在使用Session后立即将其解放,才能解决问题原创 2016-11-09 09:39:59 · 2965 阅读 · 0 评论 -
Cornerstone详细操作
1、⾸首先打开Cornerstone2、然后如下图所⽰示:3、选择对应的仓库,如下图所⽰示4、然后Import完成之后,就把本地的⽂文件提交到SVN服务器上了,如下图所⽰示,另外如果你想要使⽤用SVN进⾏行版本控制的话,那么需要把服务器上的⽂文件Check Out到本地,转载 2016-11-09 11:26:22 · 542 阅读 · 0 评论 -
iOS10:CallKit的黑名单以及标示号码功能实践
CallKit 这个开发框架,是在iOS10新增开放,提供了很多关于IOS电话功能权限,其中可以进行电话号码的标示以及黑名单拦截功能创建这个功能的流程如下原创 2016-11-09 20:56:51 · 2728 阅读 · 0 评论 -
mac os 10.11 安装Cocoapods失败解决方案
最近出现的错误如下ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/xcodeproj具体解决方法:sudo gem install -n /usr/local/bin cocoapods原创 2016-11-10 16:15:58 · 668 阅读 · 0 评论 -
Cocoapods 需更换源,taobao Gems 源已停止维护
gem sources --remove http://ruby.taobao.org/gem sources -a https://gems.ruby-china.org/即可正常运作,最新源由腾讯云提供服务原创 2016-11-11 09:22:12 · 3537 阅读 · 0 评论