2-4、extern引用外部依赖 2-5、避免循环引用 3、内存管理 3-1、避免动态内存分配和手动管理内存 3-2、使用智能指针而不是裸指针 3-3、使用RAII 管理资源 3-4、使用引用而不是裸指针 3-5、使用make_shared和make_unique创建智能指针 3-6、慎用共享指针 3-7、优先使用类内初始化成员 3-8、不要使用C样式...
//***__strong修饰符和__weak修饰符类似于C++中的智能指针,std::shared_ptr和weak::shared_ptr,前者也是强引用,后者也是避免循环引用***// 不要显式调用dealloc,如【self dealloc】,下面是可行的 //---ARC下内存管理规则,不能使用或不推荐使用的---// 1.对象变量不能作为C语言的结构体成员, structdat...
(或者答:内存管理的几条原则:自己创建的对象自己持有。非自己创建的对象自己也可以持有。自己持有的对象自己释放。非自己持有的对象无法释放。避免循环引用,retain——release成对出现。在dealloc中最好把指针都置空,避免野指针。) 答:1>.谁申请,谁释放; 2>.遵循 Cocoa Touch 的使用原则; 3>.内存管理主要要避免...
为了避免循环引用必须执行Block 存在执行了Block语法 却不执行Block的路径时,无法避免循环引用.
2、__weak是不会持有对象实例,__weak修饰符可以避免循环引用 __weak id obj2=nil;{__strong id obj_var=[[NSObject alloc]init];/// 自己生成对象并持有obj2=obj_var;/// obj2持有对象的弱引用NSLog(@"__weak %@",obj2);/// 此时由于在obj_var变量可用域中,obj2此时有值}NSLog(@"__weak %...
循环引用 在C++开发中,为了尽可能的避免内存泄漏,自C++11起引入了smart pointer,常见的有shared_ptr、weak_ptr以及unique_ptr等(auto_ptr已经被废弃),其中weak_ptr是为了解决循环引用而存在,其往往与shared_ptr结合使用。 下面,我们看一段代码: class Controller { ...
避免出现循环引用:由于一个句柄可以同时指向多个对象,如果存在循环引用的话,可能会导致内存泄漏和程序崩溃等问题。因此,在使用多重从属对象句柄c时,需要注意避免出现循环引用。 避免对象被删除:由于多个对象可能同时依赖于一个句柄,因此如果一个对象被删除了,可能会导致其他对象访问句柄时出现错误。
weak_ptr的主要使用场景,一是用于探查是否内存空间是否有效,用户可以通过expired()或者lock()来检测数据的有效性,以避免空指针。二是可以用于打破循环引用。c++20中的原子智能指针 智能指针的计数器是线程安全,但是其指向的对象的不是线程安全的。如果需要多个线程操作,为了保证安全性,可以 1、直接调用 mutex 的 ...