有一个所有者,那么它就不会被销毁。Objective-C通过引用计数(Reference Counting)机制来管理内存,这是OC内存管理的基础。每当一个对象被创建或者一个指针赋值给该对象时,对象的引用计数增加。当对象的引用计数变为零,表示没有对象再持有它,这时系统会自动释放该对象的内存。
2)所有权规则
在Objective-C中,遵循三条所有权规则:
- 如果你创建了一个对象(例如,通过`alloc`,`new`,`copy`或`mutableCopy`),你拥有它,并且需要负责调用`release`或`autorelease`来减少其引用计数。
- 当你从其他地方接收到一个对象时,你并不拥有它,除非明确地调用了`retain`方法。
- 当你不再需要一个对象时,你应该调用`release`或`autorelease`来减少它的引用计数。
2、内存管理的分类
Objective-C内存管理主要包括手动内存管理和自动引用计数(ARC,Automatic Reference Counting)两种方式。
- 手动内存管理:即上述提到的引用计数,需要开发者手动调用`retain`,`release`,`autorelease`来管理对象的生命周期。
- 自动引用计数(ARC):自iOS 5.0及以后版本引入,编译器自动插入`retain`,`release`,`autorelease`调用,减轻了开发者的负担,但开发者仍需理解内存管理的基本原则,以便正确编写代码。
OC语言疯狂讲义(下)V2.0的更新内容中特别提到了NSString内存管理的讲解,NSString是Objective-C中的一个基础类,通常用来处理文本字符串。在内存管理中,NSString有其特殊性,因为它是不可变的,所以当你创建或复制一个NSString对象时,实际上大多数情况下会返回已存在对象的引用,而不是创建新的对象,这有助于节省内存。
`copy`关键字在OC中也是一个重要的概念。通常,对于实现了`NSCopying`协议的对象,`copy`会创建一个新的实例,复制原始对象的所有属性。在更新版的讲义中,`copy`的使用和相关知识点可能进行了调整和更新,确保开发者能更好地理解和使用这一特性。
此外,讲义还提到了一些课程管理方面的内容,如上课时间、预习方法和授课资料获取,这些都是为了保证学员能够高效地学习和掌握Objective-C知识。
OC语言疯狂讲义(下)V2.0的更新内容着重于深化和细化了Objective-C的内存管理知识,尤其是NSString的内存管理、`copy`行为的调整以及自动引用计数的理解,这些都是OC编程中至关重要的部分,对于开发者优化代码性能、防止内存泄漏和提高程序稳定性具有重要意义。