- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 Swift&Objective-C混编互调
Swift开发是一种大趋势了,每年Apple都会发布新的版本。但是它的第三方库还是没有Objective-C的多,而且想用老项目中的工具类或框架,该怎么办呢?这就需要Swift&Objective-C混编互调了,但是在Objective-C的编译器主要可以识别以下几种扩展名的文件:.m文件,可以编写Objective-C代码或者C语言代码;.cpp文件,C++文件,只能识别C++或...
2019-08-18 17:27:46 508
原创 iOS开发之Block访问外部变量和循环引用问题
说起Block在iOS开发中作用非常多,用处也非常广。但要用好Block,确保业务逻辑正常,并且内存管理不出问题,也是不简单的。本篇不再阐述Block的概念和语法用法,就Block访问外部变量和循环引用问题来介绍一下。一、Block访问外部变量我们先看一个block访问外部变量的例子: int a = 10; void(^myblock)(void) = ^(v...
2019-08-18 17:24:31 710
原创 iOS多线程之定时任务
在iOS开发中我们经常会遇到一些业务,需要延迟一段时间去做一件事,或者是每隔一段时间都去做一件事,这就需要用到定时任务处理。iOS开发中常用的定时任务实现方式如下:performSelector 实现延时任务sleep(10)线程挂起/[NSThread sleepForTimeInterval: 10]实现任务等待,会阻塞主线程GCD的dispatch_after实现延时或dispatc...
2019-08-18 17:20:55 953
原创 iOS多线程之线程锁
在多线程开发中,不可忽视的一个问题就是多个线程同时访问同一个资源时,会造成脏数据等预想不到的结果,为了避免这种现象,我们需要在访问资源的时候添加线程锁,来控制访问。添加线程锁的方式在这主要讲三种方式:@synchronized隐式创建锁对象NSLockGCD的dispatch_semaphore_t信号机制一、@synchronized( )@synchronized()内的对象设...
2019-08-18 17:17:34 701
原创 iOS多线程之GCD用法详解
在上一篇讲解了iOS开发的三种多线程实现方式的特点和用法,在这一篇主要讲解一下GCD的用法。GCD(Grand Central Dispatch)又叫大中央调度,它对线程操作进行了封装,加入了很多新的特性,内部进行了效率优化,提供了简洁的C语言接口,使用更加简单高效,也是苹果公司推荐的方式。特点:GCD 可用于多核的并行运算GCD 会自动利用更多的 CPU 内核(比如双核、四核)GCD...
2019-08-18 17:15:34 753
原创 iOS多线程GCD、NSTread和NSOperation简介
在iOS开发中我们经常会用到多线程来处理一些业务,那么iOS里有哪些实现多线程的方式呢?NSTread:封装程度最小、最轻量级,开销较大。GCD(Grand Central Dispatch):内部效率优化,提供简洁的C语言接口,更加简单高效。NSOperation:基于GCD的一个抽象基类,不需要管理线程的生命周期和同步,比GCD可控性强。一、NSTreadNSTread封装程度最...
2019-08-18 17:12:30 643
原创 Runtime动态创建一个类和修改方法的操作
我们都知道Objective-C是一门动态语言,它的动态性一方面就体现在了runtime上。接下来我们就来看一下,通过runtime来动态的创建一个类,并且给类添加属性和方法,并且还能给已有的类修改、替换方法的实现。动态的创建一个类的步骤:创建一个类添加属性(一定要在注册前添加)注册这个类添加方法销毁这个类-(void)createClass{ //创建一个新类 My...
2019-08-18 17:09:36 671 1
原创 Runtime访问私有变量和方法及KVO访问
一、Class在之前的文章中我们提到,所有的对象都有个isa指针指向它对应的类Class,而Class是一个objc_class结构体,结构体中:实例变量列表objc_ivar_list方法列表objc_method_list对应的runtime获取方法:Ivar *class_copyIvarList(Class cls, unsigned int *outCount)Metho...
2019-08-18 17:06:42 311
原创 iOS开发之Autoreleasepool简介
Autoreleasepool即自动释放池,是在ARC自动管理内存机制下用来管理程序中开辟的内存的,ARC工程每个进程都有个全局自动释放池。MRC中,调用[obj autorelease]的对象都会放到Autoreleasepool中统一管理。在没有手动添加AutoreleasePool的情况下,autorelease对象是在当前的runloop迭代结束时释放的。一、用法//MRC下用法N...
2019-08-18 17:04:20 451
原创 iOS单例模式之MRC和ARC单例类
在iOS的开发中,我经常会用到的一种设计模式:单例模式,目的是让这个对象只实例化一次,在内存中只有一份内存。而且是常驻内存,不会被释放。手写一个单例也许我们都已经很熟悉,但是真的写的很完善吗,有哪些需要注意的呢?全局静态实例对象提供一个供外部调用的类方法加线程锁,防止重复实例化重写内存分配方法下面我们就在MRC和ARC两种模式下看一下单例的写法有什么区别。MRC单例首先我们来看...
2019-08-18 17:00:16 196
原创 __bride、__bride_transfer和__bride_retain的区别和用法
在上一篇里讲到内存泄漏的检测,有一处内存泄露是由于CoreFoundation创建的对象没有释放掉,在开发中Foundation和CoreFoundation框架里的对象需要转换才能用。一、ARC和Foundation、CoreFoundation和它一样的还有__bride_transfer和__bride_retain,那么他们之间有什么关系和区别呢?在讲这个之前我们先看一下ARC和Fou...
2019-08-18 16:57:57 192
原创 iOS静态分析Analyze、内存泄漏Leaks分析
在iOS日常开发中,内存管理十个很重要的话题和注意事项。在老的iOS版本中,都是手动管理内存(MRC),要时刻注意着内存的开辟和释放,很容易造成内存泄漏。ARC(自动引用计数)是iOS5、macOS10.7引入的内存管理技术,它使我们的开发更省心,不用去关注内存的释放,都交给了AutoReleasePool去管理。MRC和ARC在其他的文章介绍了,在这就不多阐述了。有了ARC就一定不会造成内存...
2019-08-18 16:54:21 923
原创 合并framework
Edit Scheme:选择run->将Debug模式改成Release模式,选择Close终端:输入并回车lipo -info 加真机上的这个文件路径 输出结果:armv7 arm64 说明是真机i386 x86_64 模拟器合并lipo -create 真机路径 模拟器路径 -output 输出文件路径再用lipo -info命令查看输出的合并后新的文件:这...
2019-08-18 16:49:41 1039
fxmacprnstd1702am105iml.dmg
2019-08-06
好学的Objective-C
2013-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人