- 博客(33)
- 资源 (4)
- 收藏
- 关注
转载 iOS多线程:『NSOperation、NSOperationQueue』详尽总结
https://www.jianshu.com/p/4b1d77054b35
2018-06-24 16:39:37 302
原创 NSNotification、delegate、kvo、block的对比
1、NSNotification(通知)描述: 有一个NSNotification Center的单例对象,允许事件发生时通知其它对象。通知中心完成观察者注册、发送通知、移除观察者操作。使用: NSNotification的使用包括注册通知、观察者注册、发送通知、移除观察者操作。注意: 1、同一个通知注册同一个观察者多次,而且调用的方法一样。那么这个方法会调用多次。 2、移...
2018-06-10 21:41:58 281
转载 ios中的load和initialize的区别
https://sunjinshuai.github.io/2016/08/16/iOS%E4%B9%8B-load%E5%92%8C-initialize%E7%9A%84%E5%8C%BA%E5%88%AB/
2018-06-08 13:58:14 568
原创 property(2) - 修饰属性的关键字
属性扩展属性的线程安全修饰实例变量,使其线程中是否安全,或者高效nonatomic 和 atomic (默认) 1 atomic用于多线程中,是原子性的(即它的方法有加锁和解锁的过程) 2 nonatomic用于单线程,非原子性,因为没有加锁和解锁的过程所以效率比atomic的高但是其安全隐患大属性的语义通过使用点方法给实例变量赋值,而实例变量所拥有的特性...
2018-05-09 15:17:47 248
原创 内存管理(3) - Autorelease Pool(大部分摘抄自black)
前言NSAutoreleasePool(仅MRC有)NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];//作用范围从释放池创建到释放池release[pool release];@autoreleasepool(MRC、ARC都有)@autoreleasepool //比NSAutorelease...
2018-05-01 16:46:36 176
原创 内存管理(2) - property修饰符和object所有权
前言property修饰符和object所有权有一些关联。1、属性中的修饰符的内存管理实现assign(默认)(ARC、MRC都有)用于CGFloat、NSInteger、基本数据类型(c类型) 用于不保留变量的对象、即相当创建弱引用而避免循环引用的发生- (void)setter:(tupe *)xxxx //调用其setter方法时{ _...
2018-05-01 16:44:34 320
转载 iOS开发中如何设置textfield输入长度并且仅仅只能输入数字
https://blog.csdn.net/qq_18235033/article/details/52851117
2018-04-20 17:06:51 643
原创 block(6) - ARC、MRC及block之间的循环引用
2、易发生在block如://.h文件在ARCtypedef void(^block)(void);@interface Test : NSObject@property (nonatomic,copy)block testBlock;@property (nonatomic,assign)NSInteger temp;@property (nonatomic,copy)...
2018-03-12 15:56:30 392
原创 runtime(1) - 消息发送机制
1、消息发送机制1、[ ]发送消息 2、将[ ]发送消息转换为cpp代码//在命令行输入此命令即可clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs...
2018-03-08 15:11:23 215
原创 内存管理(4) - 循环引用
当用指针指向某个对象时候,可以对其进行管理(通过retain和release)就拥有对这个对象的强引用或弱引用1、什么是循环引用?结论:当两个对象相互持有对方(即拥有对对方的强引用),此时各自的引用计数都为1,释放不了,而造成内存泄露。当多个对象能形成一个环时候情况类似。用weak或者__weak创建归零弱引用 因为c指向的地方被释放了,调用它可能会导致问题,...
2018-02-08 22:34:35 374
原创 block(5) - block需要特别注意的地方
1、ARC下也是有栈block的1、ARC下,栈block 2、ARC下,堆block 3、MRC下,栈block 疑问 1:对比2,3,同样的代码在ARC,MRC下的block的类型居然不同,为什么呢? - 在ARC下,block如果通过 = 进行传递时,会导致调用objc_retainBlock->Block_copy->_Block_copy_intern...
2018-02-08 19:52:00 300
原创 block(4) - 本地对象和block及__block修饰符
本地对象和block及__block修饰符1、看其底层实现 //__block声明而多出来的结构体 struct __Block_byref_b_0 { void *__isa; __Block_byref_b_0 *__forwarding; int __flags; int __size; void (*__Blo...
2018-02-08 17:57:03 282
原创 block(3) - 变量与__block修饰符
__block修饰变量的时候时候1、__block修饰本地变量转为cpp的样子 //用__block修饰的本地变量b多了这个结构体 struct __Block_byref_b_0 { //直译为本地变量b在block中是通过引用的 void *__isa; __Block_byref_b_0 *__forwar...
2018-02-08 16:53:23 500
原创 内存管理(5) - 关于retainCount在不同场合输出值不符合预期的分析
1、NSString、NSMutableString 和 NSArray、NSMutableArrayvoid x(void){ NSString *str = [[NSString alloc]init]; //定义初始一个对象 //NSArray *str = [[NSArray alloc]init]; //这句的下面的结果也是一样的 NSLog(@"st...
2018-02-08 15:52:30 200
原创 block(1) - block的底层
一、什么是代码块?代码块的底层实现是结构体1、block的内存实现 struct Block_layout { void *isa; //指向所属类的指针,即block的类型 int flags; //标志变量,操作block内部时会用到 in...
2018-02-08 15:50:32 483
原创 block(2) - 变量与block
block和variable1、本地变量与block的关系及其变化 int main(int argc, const char * argv[]) { @autoreleasepool { int a = 10; int b = 20; NSLog(@"&a:%p ,&b:%p ,a:%d ,...
2018-02-08 15:42:33 297
原创 strong和copy
以下对使用strong 和 copy的地方都适用.h @interface Test : NSArray @property (nonatomic,strong) NSArray * sArray; @property (nonatomic,copy) NSArray * cArray; - (void) pri; @end.m...
2018-01-25 20:01:30 188
原创 关于const 、NSxxxx(不可变)、NSMutablexxxx(可变) 的区别
NSxxxx 、NSMutablexxxx 、const之间的关系都差不多、这里用NSString 、NSMutableString来讲NSString的不可变 NSString *string = @"one"; //其实是string指针指向的地址的内容不可变(如@“one”的内容是不可变的) //问题1 :@“one”的内容为啥不可变? //
2018-01-25 14:53:14 262
原创 id相关
动态数据类型和静态数据类型动态数据类型只有在运行时候才知道其类型和属性静态数据类型在编译的时候就知道其类型和其属性,并在编译时可访问其属性1、消息发送机制id (动态数据类型)id是指针,id*是指针的指针id 有时很危险 NSString *s = @"ab"; id obj = s; //id为指向任何类型...
2018-01-22 20:01:20 183
原创 protocol(协议)和 delegate(委托)
protocol(协议)使用delegation委托的场景实现不同页面的数据交互、可以用在界面跳转、界面传值、跳转页面刷新数据、监听事件等。当delegate的事件触发时,delegate才会被调用。...
2018-01-18 21:21:54 238
原创 property(1) - 属性的基本知识
属性知识点属性@property预编译指令的作用是自动生成setter和getter方法@synthesize表示创建了该属性的访问代码(xcode4.5后不再用了)实例变量名和属性名一致,因为属性基于变量实例变量可以在头文件或者实现文件 , 区别是子类可以通过属性访问头文件中的,而实现文件中的为本类所有,子类不可见点表达式出现在左调用setter,出现在右调用gettercopy...
2018-01-18 14:53:38 557
原创 内存管理(1) - 引用计算的基本操作
内存管理内存管理其实就是对引用计数的管理,需要从MRC和ARC两方面探讨,其中MRC与ARC的主要区别是MRC下需要手动retain、release、autorelease等在ARC下会自动完成。1、引用计数相关操作 对象操作 OC中对应的方法 对应的 retainCount 变化 生成并持有对象 alloc/new/copy/mutableCop...
2018-01-17 21:45:45 247
qt继承图最详细
2017-09-12
野火stm32开发pdf
2017-09-12
跟我一起写Makefile-陈皓
2017-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人