首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏一“技”之长

    Swift专题讲解十六——ARC在Swift中的应用

    deinit{ print("ClassTwo deinit") } } var obj1:MyClassOne? deinit{ print("ClassFour deinit") } } var obj3:MyClassThree? deinit{ print("ClassSix deinit") } } var obj6:MyClassSix? deinit{ print("ClassSix deinit") } } var obj6:MyClassSix? deinit{ print("ClassSix deinit") } } var obj6:MyClassSix?

    2.4K20发布于 2018-08-15
  • 来自专栏CoderStar

    当 Swift 中的 lazy、weak 碰上 NSObject

    然后看了一下 Crash 时候的调用栈,发现崩溃在deinit时KVO释放Observer的过程中。一段排查之后,新的坑点出炉了。 let service = MyService() service.delegate = self return service }() deinit 其实 Crash 信息相对已经比较明显了,结合到代码就是 self 当前已经在释放中了(deinit),不可以被弱引用了(service.delegate = self)。 解决 解决方式其实可以很简单,先介绍简单的一种: 解决方式一 定义一个service是否初始化的变量,然后在deinit时根据变量控制是否继续调用service.stop()。 service.delegate = self return service } /// 过程中使用service,可使用 service.wrapped deinit

    48040编辑于 2022-09-23
  • 来自专栏浮躁的喧嚣

    swift 自动引用计数

    let name:String init(name:String) { self.name = name print("init") } deinit { print("deinit") } } var stu0:Student? init(str:String) { self.aStr = str } deinit { print("ClassA释放") } } class init(str:String) { self.bStr = str } deinit { print("ClassB释放") } } var init(str:String) { self.bStr = str } deinit { print("ClassB释放") //正常打印

    43310编辑于 2023-11-22
  • 来自专栏后端

    基于RocksDB编写一个简单的SQL数据库|得物技术

    {errStr}); return RocksdbErrors.RocksDBOpenError; } return r;}pub fn deinit(self: Self) (self: BinaryOperationAST) void { self.left.deinit(); self.allocator.destroy(self.left) (self: *SelectAST) void { for (self.columns) |m| { var col = m; col.deinit (self: Self) void { for (self.cells.items) |c| { c.deinit(self.allocator); } self.cells.deinit(); } pub fn append(self: *Self, cell: Value) !

    42900编辑于 2024-12-20
  • 来自专栏每日一篇技术文章

    Swift3.0 - 自动引用计数(strong,weak,unowned)

    我们先创建一个对象 class Person{ var name:String init(name:String) { self.name = name } deinit deinit { print("学生对象释放") } } // 学校类 class School{ var student:Student? // 强引用 deinit { print("学校对象释放了") } } var school:School? // 强引用 deinit { print("学校对象释放了") } func describe() ->String { return "学校" // 强引用 deinit { print("学校对象释放了") } func describe() ->String { return "学校

    75310发布于 2018-09-14
  • 来自专栏大话swift

    重读swift官方文档之 weak unowned

    init(name: String) { self.name = name } deinit { print("\(name) is being deinitialized deinit { print("Apartment \(unit) is being deinitialized") } } var person:Person? deinit { print("Apartment \(unit) is being deinitialized") } } 修改之后我们看一下测试结果: ? 注意 ? init(name: String) { self.name = name } deinit { print("\(name) is being deinitialized UInt64, customer: Customer) { self.number = number self.customer = customer } deinit

    70530发布于 2019-07-03
  • 来自专栏小徐学爬虫

    Zig高并发爬取数据简洁模版

    try http.Client.init(allocator, .{ .connection_pool_size = config.max_connections }); defer client.deinit (); tasks.deinit(); }​ // 启动并发爬取任务 for (urls) |url| { var task = try std.Thread.spawn {@errorName(err)}); return; }; defer req.deinit(); // 自动关闭连接​ // 发送请求并等待响应 req.start u8).init(allocator); defer { for (links.items) |link| allocator.free(link); links.deinit ;每个URL在独立轻量级线程中执行3、资源自动清理:defer req.deinit(); // 确保请求关闭defer allocator.free(body); // 确保内存释放利用Zig

    25310编辑于 2025-07-08
  • 来自专栏程序手艺人

    玩转「Wi-Fi」系列之wpa_supplicant - main分析(十)

    eloop_init()) { wpa_printf(MSG_ERROR, "Failed to initialize event loop"); wpa_supplicant_deinit //初始化通知机制相关资源,和dbug有关 if (wpas_notify_supplicant_initialized(global)) { wpa_supplicant_deinit global->drv_count == 0) { wpa_printf(MSG_ERROR, "No drivers enabled"); wpa_supplicant_deinit //全局初始化,返回值保存在wpa_global成员变量drv_pri数组中 .global_init = nl80211_global_init, .global_deinit = nl80211_global_deinit, .... // 处理和具体驱动相关的命令 .driver_cmd = wpa_driver_nl80211_driver_cmd

    2.2K20发布于 2019-02-21
  • 来自专栏瓜大三哥

    allocater

    二、函数功能 1.static void yaffs_deinit_raw_tnodes(struct yaffs_dev *dev)//将挂在dev设备上的tnodes 释放掉 2.static void 放到freelist中 6.static void yaffs_init_raw_objs(struct yaffs_dev *dev)//为obj进行初始化 7.static void yaffs_deinit_raw_objs yaffs_free_raw_obj(struct yaffs_dev *dev, struct yaffs_obj *obj)//将obj放入对应的free list 11.void yaffs_deinit_raw_tnodes_and_objs (struct yaffs_dev *dev) yaffs_deinit_raw_tnodes(dev); yaffs_deinit_raw_objs(dev); 12.void yaffs_init_raw_tnodes_and_objs

    73550发布于 2018-02-24
  • 来自专栏iOS打包,上架知识大全

    开心档之Swift 自动引用计数(ARC)

    : String init(name: String) { self.name = name print("\(name) 开始初始化") } deinit deinit { print("Apartment #\(number) 被析构") } } // 两个变量都被初始化为nil var kxdang: Person? deinit { print("\(name) 主模块") } } class SubModule { let number: Int init(number: Int) { deinit { print("子模块 topic 数为 \(number)") } } var toc: Module? var list: SubModule? init(name: String) { self.name = name } deinit { print("\(name)") } } class Marks

    73220编辑于 2023-03-21
  • 来自专栏移动端开发

    Flutter和iOS混编详解

    { debugPrint("MixFlutterMethodChannel - deinit") } }       我们再看看Flutter端的发送代码是怎么处理的: /// 疑惑点:我在MixFlutterViewController的deinit方法中加入了日志,然后综合上面的MixFlutterMethodChannel中deinit的日志,得出一个有点不理解的点,主要疑问如下面所示是在 /* "MixFlutterMethodChannel - deinit" 2022-05-08 22:28:26.159278+0800 flutter_mixed_ios "MixFlutterMethodChannel - deinit" "MixFlutterViewController - deinit" "MixFlutterMethodChannel - deinit" */ /// 使用该方法创建后 在Flutter发送消息返回 打印日志如上面注释 self.flutterMethodChannel

    3.5K31编辑于 2022-05-10
  • 来自专栏iOS开发大全

    开心档之计数(ARC)

    name: String init(name: String) { self.name = name print("(name) 开始初始化") } deinit deinit { print("Apartment #(number) 被析构") } } // 两个变量都被初始化为nil var kxdang: Person? deinit { print("(name) 主模块") } } class SubModule { let number: Int init(number: Int) { deinit { print("子模块 topic 数为 (number)") } } var toc: Module? var list: SubModule? init(name: String) { self.name = name } deinit { print("(name)") } } class Marks

    76720编辑于 2023-05-09
  • 来自专栏码客

    NSNotificationCenter.addObserverForName的正确打开方式

    deinit { print("dealloced") // 析构方法永远不会被执行 } override func viewDidLoad() { super.viewDidLoad deinit { print("dealloced") // 这样就可以走到析构方法了 } override func viewDidLoad() { deinit { if let nameObserver = nameObserver { NSNotificationCenter.defaultCenter(

    1.4K10发布于 2019-10-22
  • 来自专栏编程随想

    php DES加密算法实例分析

    mcrypt_generic_init($module,$key,$iv); $encrypted=$iv.mcrypt_generic($module,$data); mcrypt_generic_deinit iv); $decrypted=mdecrypt_generic($module,substr($data,$ivSize,strlen($data))); mcrypt_generic_deinit mcrypt_generic_init($td, $key, $iv); $ret = base64_encode(mcrypt_generic($td, $value)); mcrypt_generic_deinit mdecrypt_generic($td, base64_decode($value))); $ret = $this->UnPaddingPKCS7($ret); mcrypt_generic_deinit

    1.2K00发布于 2021-07-13
  • 来自专栏君正T31开发实战指南

    君正T31应用开发13:切换分辨率

    < 0) {IMP_LOG_ERR(TAG, "ImpStreamOn failed\n");return -1;}return 0;}2.3:获取视频流并销毁原来建立的通道数据sample_res_deinit1 .关闭视频流开关2.解绑刚才绑定的视频源数据和编码数据3.编码退出函数4.视频源退出函数int sample_res_deinit(){int ret, i;/* Step.a Stream Off * sample_res_get_video_stream();if (ret < 0) {IMP_LOG_ERR(TAG, "Get video stream failed\n");return -1;}ret = sample_res_deinit ();if (ret < 0) {IMP_LOG_ERR(TAG, "sample_res_deinit failed\n");return -1;}2.4:重复上述的过程,这部分重新配置你的分辨率参数 ();if (ret < 0) {IMP_LOG_ERR(TAG, "sample_res_deinit failed\n");return -1;}3:实验现象:首先我们设置分辨率为第一步:通道0是1080P

    1.6K10编辑于 2023-06-25
  • 来自专栏Netkiller

    数据库安全·开发加密插件

    UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error); void safenet_encrypt_deinit UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error); void safenet_decrypt_deinit UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error); void safenet_config_deinit args->args[0]); } *length = strlen(data); return ((char *)data); } void safenet_decrypt_deinit safe_url, safe_key); *length = strlen(config); return ((char *)config); } void safenet_config_deinit

    3.3K70发布于 2018-03-05
  • 来自专栏全志嵌入式那些事

    全志R128蓝牙占用内存资源较大,修改menuconfig配置后经常编译不过或无法运行解决方法

    BT_L2CAP_CID_SMP, bt_smp_accept, NULL); int bt_smp_init(void) { return 0; } #if defined(CONFIG_BT_DEINIT ) int bt_smp_deinit(void) { return 0; } void bt_smp_mem_deinit(void) { return; } void bt_keys_mem_deinit(void) { return; } #endif #if defined(CONFIG_BT_VAR_MEM_DYNC_ALLOC) void keys_dynamic_mem_alloc

    32410编辑于 2024-02-02
  • 来自专栏MySQL参数系列

    如何定制一个属于自己的MySQL扩展插件?

    ulid_udf.cc.o /home/jeves/percona-server-8.0.32-24/plugin/ulid/ulid_udf.cc: In function ‘void ulid_udf::ulid_deinit ulid/ulid_udf.cc:132:39: warning: unused parameter ‘initid’ [-Wunused-parameter] extern "C" void ulid_deinit * * After all rows have been processed, MySQL calls the deinitialization function xxx_deinit() return result; } /** * De-init - cleanup memory allocated during init */ extern "C" void ulid_deinit

    91140编辑于 2023-08-04
  • 来自专栏嵌入式智能硬件

    AB153x API----通用输入输出

    步骤5.调用hal_gpio_deinit()取消初始化该引脚。 步骤3.调用hal_gpio_deinit()取消初始化该引脚。 hal_gpio_deinit(gpio_pin); } 功能 hal_gpio_status_t hal_gpio_init(hal_gpio_pin_t gpio_pin) hal_gpio_status_t hal_gpio_deinit(hal_gpio_pin_t gpio_pin) 该函数将GPIO硬件初始化为默认状态。 功能文件 ◆ hal_gpio_deinit() hal_gpio_status_t hal_gpio_deinit ( hal_gpio_pin_t gpio_pin ) 该函数将GPIO硬件初始化为默认状态

    1.1K20发布于 2020-08-31
  • 来自专栏linux驱动个人学习

    HiGV ui代码流程

    = s32Ret) { HI_GV_Deinit(); HI_GV_PARSER_Deinit(); return NULL; } = Ret) { HI_GV_Deinit(); HI_GV_PARSER_Deinit(); return Ret; } /** Return: %x \n",Ret); HI_GV_Deinit(); HI_GV_PARSER_Deinit(); return Ret; } Return: %x\n",Ret); HI_GV_Deinit(); HI_GV_PARSER_Deinit(); return Ret; } Return: %d\n",Ret); HI_GV_Deinit(); HI_GV_PARSER_Deinit(); return Ret; }

    1.6K30发布于 2019-07-27
领券