ARC实践

【卫星语音通信】神经网络语音编解码算法:AudioDec 最新研究表明,通过深度学习模型对语音信号进行智能压缩与重建,可在12 kbps码率下实现48 kHz采样率的高保真语音还原,其主观音质评分(MOS)可达3.9分(满分4.27分),远超传统参数编码技术。这意味着未来卫星电话的通话质量有望达到CD级水准,而蜂窝网络的语音业务带宽需求可降低60%以上,为蜂窝和卫星网络中的大规模物联网语音交互铺平道路。它的诞生为神经音频编解码技术带来了一次重要升级,有助于让未来实时语音交互更流畅、更清晰,也让我们进一步体验到人工智能与音频信号处理结合所带来的创新可能性。 阅读详情

一. 什么是引用计数


Objective-C中对对象的内存管理可以用生成、持有、释放、废弃4个词来表示,其中生成就是alloc/new/copy/mutableCopy等方法,持有对象 通过retain来实现,释放对象是release操作,废弃对象是dealloc操作。当对象生成的同时自然也持有该对象。


1. 自己生成并持有对象:

// 生成并持有对象
id obj = [[NSObject alloc] init];
// 或者
id obj = [NSObject new];


不光是这几个方法,凡是以alloc/new/copy/mutableCopy开头的方法都是持有自己。


2. 持有非自己生成的对象:

// 取得对象
id obj = [NSMutableArray array];
// 持有对象
[obj retain];

在这里,array方法返回一个谁都不持有的对象,它的实现可能是这样:

-(id) array
{
    // 创建并持有对象
    id obj = [[NSMutabelArray alloc] init];
    // 通过autorelease不持有对象
    [obj autorelease];
    return obj;
}

在该实现中,通过autorelease方法不持有对象。

3. 持有的对象一旦不再需要就要释放:

[obj release];

这里需要注意,只有自己持有该对象才能释放,释放自己没有持有的对象或者已经释放了的对象会引起程序崩溃。


二. autorelease

Autorelease的使用方法如下:

1. 生成NSAutoreleasePool对象

2. 调用对象的autorelease方法

3. 废弃NSAutorelease对象

autorelease有点像C语言的作用域,对于调用了release方法的对象,在废弃NSAutoreleasePool对象时,都将调用release方法。


NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
id obj = [[NSObject alloc]init];
[obj autorelease];
[pool drain];


普通变量,使用alloc,new ,copy创建的对象要么加上autorelease,要么在块结束的时候release.
在类和类的方法中定义的变量要么使用autorelease,要么在 类的dealloc方法 中release它们。
除了alloc、new或copy之外的方法创建的对象都自动声明了autorelease。

三. 理解strong和weak

1. strong指针

NSString* str = self.label.text;

如果此时self.label.text的值是"Test Label"的话,这行代码将使得self.label.text和str 都持有这个字符串。

如果再执行

self.label.text = @"another label";
此时str继续持有"Test Label"这个字符串,而self.label.text将持有"another label"这个字符串。

如果此时str被设置为另外一个值,或者超出了它的作用域,"Test Label"将不会被任何对象持有,它将被释放。


2. weak指针


self.label.text = @"Test Label";
weak NSString* str = self.label.text;

 

此时str将不持有"Test Label"字符串,该字符串仅被self.label.text持有。

self.label.text = @"another label";
这行代码后,@"Test Label"将不被任何对象持有,将被释放,此时str将为nil.

用weak指针指向新创建的对象将导致该对象被立即释放

id __weak obj = [[NSString alloc] init];

由于新创建的对象没有被任何对象持有,因此将立即释放。


四. ARC实践指南:

1. 原则上所有的实例变量和局部变量都应该是strong的,但对一些UI的property应该使用weak,由于它是被UIWindow所持有的,因此源码中它应该是weak的。具体一点:IBOutlet可以为weak,NSString为copy,Delegate一般为weak,其他的看情况。一般来说,类“内部”的属性设置为strong,类“外部”的属性设置为weak。说到底就是一个归属权的问题。小心出现循环引用导致内存无法释放。

2. 通过weak指针可以解决retain循环问题,即父对象拥有子对象,但子对象不拥有父对象,即子对象拥有一个指向父对象的weak指针。


五. 理解关键字 copy, assign, retain

1. 在属性中加copy,意味着建立一个新对象,这样新旧对象的retainCount都是1。

2. assign可以理解为别名,并不增加retainCount,因此适用于基础数据类型和C数据类型。

3. retain即增加计数,适用于NSObject其他子类。

详细可参见 copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理





cesium实战目录必看 本文作者长期从事GIS相关工作,专注于三维和地图可视化领域,熟悉Cesium、Three.js、WebGL等开发框架。文章目录展示了作者在Cesium应用中的多项技术实践,涵盖水面反射、离屏渲染、后处理效果、地形裁剪、Shader着色器、动态单体化、气象图、缓冲区域、坡度和坡向分析、三维热力图、通视分析、态势标绘等多个方面。这些内容为开发者提供了丰富的技术参考,展示了Cesium在三维可视化中的强大功能和应用场景。 阅读详情

相关推荐

使用Xpath语法爬取豆瓣读书Top250

使用Xpath语法爬取豆瓣读书Top250 使用的软件是Spyder 网页地址:https://book.douban.com/top250?start=0 直接上代码: # -*- coding: utf-8 -*- """ Created on Thu Apr 30 18:35:17 2020 @author: ASUS """ import requests import csv fr...

weixin_43987253的博客 2081

iOS——MRC和ARC实现原理

Objective-C提供了两种内存管理机制MRC(MannulReferenceCounting)和ARC(AutomaticReferenceCounting),为Objective-C提供了内存的手动和自动管理。下面我们来探讨一下MRC和ARC的实现。

LANGJ1的博客 2077

H265/HEVC视频分层码流分析语义元素解释

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL

weixin_43876729的博客 9431

ARC与ArgoCD集成:GitOps部署模式实践

在现代云原生应用开发中,GitOps(Git Operations)已经成为部署和管理Kubernetes应用的标准实践。Actions Runner Controller(ARC)作为GitHub Actions自托管运行器的Kubernetes控制器,与ArgoCD的集成能够实现完全声明式的CI/CD流水线管理。本文将深入探讨如何将ARC与ArgoCD结合,构建基于GitOps的自动化运行器管...

gitblog_00780的博客 1061

vue接入海康4G版摄像头通过萤石云平台推送视频流教程

vue-video-player接入海康视频,videojs-contrib-hls,vue播放视频

renkai721的专栏 7278

Qt Creator配置MSVC编译环境、调试环境

获取和安装:cdb.exe 在 Debugging tools for Windows 中,而现在已经不单独提供下载,只在Windows SDK 或者Windows Driver Kit里面包含 所以需要下载微软的调试工具,最少需要下载 Windows SDK。在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用,以下是配置方案。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6986

IOS ARC项目使用非ARC文件 MRC项目使用ARC文件

SDK4.0引入了ARC,到现在已经一年了,开始发现有很多项目会混合使用这两个方案。比如: 1.自己的旧项目没有使用ARC,但是引入的第三方库却是使用了ARC的。 2.自己的新项目使用了ARC,但是引入的第三方库或者以前写的代码却没有使用ARC。 这两种情况下,直接肯定是通不过编译的。可以通过升级旧项目,让其使用ARC来解决,但这个办法有时候会很麻烦。 有一个简单的办法就是,可以指

sinat_21507669的专栏 444

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

ARC 的认知

在做项目的时候经常和team 成员讨论是否应该使用ARC。所以我觉得有必要将这些讨论分享出来,让大家消除对于ARC的疑虑。 关于ARC的介绍文章网上已经很多,苹果的官方文档也不少。担心使用ARC会带来问题的同学主要的理由有以下5点: 1.担心这个技术方案不靠谱。苹果大多数时候的技术方案都是比较靠谱的,但也有一些技术方案有很多坑,例如storyboard。关于storyboard的问题可

fhbystudy的专栏 625

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

MoorePlus的博客 4220

电源完整性分析:PDN阻抗与去耦电容设计——目标阻抗计算与电容选型深度实战

摘要:随着嵌入式处理器主频突破 GHz、多核架构普及,电源完整性(Power Integrity, PI)已成为高速 PCB 设计中不可忽视的关键环节。本文从 PDN(电源分配网络)阻抗模型出发,系统讲解目标阻抗计算方法、去耦电容选型策略、反谐振抑制技术,并结合 STM32F4 核心板的完整设计实例,提供一套可落地的电源完整性工程实践方案。电源完整性设计是一项系统工程,需要从目标阻抗计算电容选型反谐振抑制PCB 布局目标阻抗是设计的起点,由电源电压、纹波要求和瞬态电流决定去耦电容。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

ARC内存使用注意事项

 官方介绍: https://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/ManagingMemory.html#//apple_ref/doc/uid/10000160-SW1   整个项目开启关闭ARC,需要在Building Setting中设置:    ...

quding0308的博客 223

MoveIt 运动学、运动规划、混合规划、move_group

混合规划是运动规划方法的一个术语,它将异构运动规划器结合起来,以产生更稳健或反应更快的解决方案。这种通用方法在导航领域已经非常成熟,并在导航2等流行项目中成功实施。MoveIt 的混合规划架构结合了一对全局规划器和局部规划器,它们以不同的规划速度和问题范围并行、并发运行。全局规划器的任务是解决全局运动规划问题,这与 “感知-规划-行动 ”应用中使用的规划器非常相似。所使用的规划器算法应该是完整的,因此假定其计算时间相对较慢。此外,全局规划器不要求实时安全,这意味着无法保证规划器在特定期限内找到解决方案。

机器人控制与仿真应用 2131

Arc 开源项目教程

Arc 开源项目教程 项目介绍 Arc 是一个现代化的浏览器项目,旨在提供一个不仅满足用户需求,还能预测用户需求的浏览器体验。该项目由 The Browser Company 开发,旨在替代传统的浏览器,如 Chrome。Arc 提供了许多创新功能,包括空间管理、隐私保护和高效的工作流程组织。 项目快速启动 环境准备 在开始之前,请确保您的开发环境已经安装了 Git 和 Java 开发工具包(JD...

gitblog_00519的博客 424

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

oc_IOS  ARC 和飞ARC的使用

有的人喜欢用ARC 也有的人不太喜欢使用ARC  认为就多写了某某的release ~~~release~~~release 很麻烦 看别人的代码总是release很多,想把多余的注意力集中在看一些重点的代码 小生在这里测试了 创建时候没有勾选ARC  ARC 和飞ARC的使用" TITLE="oc_IOS  ARC 和飞ARC的使用" /> 所以随便的创建了一个  需要手动releas

CyRo 733

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ARC简介

1、简介:ARC(Automatic Reference Counting),自动引用计数,需要XCode4.2和SDK5.0的支持。它是一个在编译期间工作的技术,编译器在编译的时候会根据变量的作用域为objective-c变量添加合适的retain、release、autorelease等函数。原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成。2、设置XCode为ARC项

有志者事竟成-程序员也可以创造优雅的艺术 996

ARC

自动引用计数(ARC),是一项为Objective - C程序在编译时提供自动内存管理的功能。ARC可以让你把注意力集中在你感兴趣的代码,对象图,和你的应用程序中的对象之间的关系,让你不必再花费精力在retain和release操作上。正如下图所示,ARC可以减少开发中的内存管理步骤,简化开发。 Contents: Summary ARC Overview Managing T

禚来强(亿刀) 的iphone开发专栏--我们 一群 热爱 移动开发,如果你也是,就加入我们。 5130

一步步教你ARC-详解

本文适合人群:对iOS开发有一定基础,熟悉iOS开发中内存管理的Reference Counting机制,对ARC机制有听闻很向往但是一直由于种种原因没有使用的童鞋。本文将从ARC机理入手对这个解放广大iOS开发者的伟大机制进行一个剖析,并逐步引导你开始使用ARC。一旦习惯ARC,你一定会被它的间接高效所征服。 写在开头 虽然距离WWDC2011和iOS 5已经快一年时间,但是很多开发者并没有

IOS_CaoMuJieBing的专栏 1179

带你探索你所不知道的objc arc

ARC or not? Automatic Reference Counting是objc发展以来相当重要的一个进步 对于开发者,任何能降低开发难度,简化代码的功能,我们都应该去了解和使用。 我们应该利用一切“偷懒”的机会,将软件开发的复杂度分解并控制在一个个小的范围内,使得对于分解后的每一个小的任务,都能被新手掌握和维护。 基于简化开发的思想来看,ARC绝对是一个没理由拒绝的技术进步。 ARC随着iOS5问世,到现在iOS8都快出了,你还在手动写retain,release么?除了固守思想外,对ARC

weixin_54803466的博客 159

iOS之MRC与ARC混编的设置

iOS之MRC与ARC混编的设置

IT李菜鸟的博客 1009

iOS中ARC与MRC代码的兼容

在ARC项目中 导入MRC的类的时候需要在此类上面添加 -fno-objc-arc 在MRC项目中 导入ARC的类的时候需要在此类上面添加 -fobjc-arc

yang_huan1986的专栏 1974

MRC --- ARC

MRC --- ARC(让ARC文件在MRC的环境下进行ARC编译) -fobjc-arc ARC --- MRC(让MRC文件在ARC的环境下进行MRC编译) -fno-objc-arc 转载于:https://www.cnblogs.com/tapple/p/4871624.html...

weixin_30487317的博客 77

如何在ARC代码中混编非ARC代码

“ios中如果arc和非arc文件混编,可以在build parses中指定compile flags,如果arc文件设为"-fobjc-arc",非arc文件设为"-fno-objc-arc"” (简单的可以用上面的一句话去实现) (以下是对ARC的介绍,有时间有耐心的话可以去看看) 本文部分实例取自iOS 5 Toturai

yuanya的专栏 961

iOS开发实战:如何将非ARC的项目转换成ARC项目

1.前言 因为公司有个国外餐饮系统,编程开发了3-4年,之前用的都是非ARC,开发到今年,第一批迭代开发的人员早已不见,目前发现了有许多的内存泄露之 类的,系统没有自动释放该释放的内存。一旦app长时间使用,内存没有得到释放,最后导致app闪崩。涉及到的地方特别多,特别繁杂。故我有了打算将此项 目完全转换称ARC项目的意向。经过1个星期的转换与1个星期的测试,成功将非ARC项目转换称ARC项

u010897392的专栏 374

关于ARC的一些说明

文章开头不废话去说明关于ARC的说明,简单记录一下在使用过程中的一下需要注意的点。 1,变量的属性 在ARC的环境下,建议使用strong替代retian,由于没有很好的实例去展示它们的区别,所以也说不出个所以然。习惯比较好的写法是,关于retain全部替换为strong,关于assign如果是object则使用weak替换如果是基本数据类型,或者C的类型,则继续沿用assign。 copy不

蜗牛的专栏 1179

内存管理,ARC

http://www.yifeiyang.net/development-of-the-iphone-simply-3/ 1.  实例变量的循环引用有两种:      强引用,retain      弱引用,assign,要保证对象在引用期内,不能被其它的引用释放.   2.  Core Foundation's memory allocation policy is that

2397
上一篇: 几种在场景之间传递数据的方式
下一篇: 一个UI控件弱引用问题
syd_programming
博客等级 码龄22年 4粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值