黑马程序员 关于一个ARC引发的问题

Eigen 直线拟合/曲线拟合/圆拟合/椭圆拟合 使用Eigen库进行直线拟合是数据分析和科学计算中的常见任务,主要通过最小二乘法实现。该代码演示了二维空间中的直线拟合,输出斜率和截距。 阅读详情

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、

<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------

关于一个ARC引发的问题

-----must be explicitly intended ownership of an object array parameter(必须明确目的对象数组参数的所有权)

今天遇到一个问题是关于在参数中利用对象数组做参数,虽然很简单,但是编译出现了问题。


刚开始我还以为是OC不能用数组做参数,但后来想,怎么可能,一门语言还会有这样的缺陷,肯定是哪里自己出错了,所以我又检查了一遍代码,发现没有什么问题,我想是不是代码逻辑有问题,但我用eclipse敲了下相类似的可以通过,我想是不是编译器有问题,由于傻不啦叽的就问了些为什么OC中不能用数组做参数、为什么Xcode不能用数组做参数。结果很明显没有得到我想要的(还真是一个小白)。过了很久我才想到把报的错误敲下发到网上问,must be explicitly intended ownership of an object array parameter,结果知道了解决方法,就是关掉ARC。如果不知道怎么关我可以写下:点击项目名称,中间的编译区会出现一些设置信息的界面,点击building setting,在搜索框中输入Automatic reference counter(可以不必全部输,输的过程会有提示的),双击将其中的YES改成NO就行了。于是我这样做了,结果也可以达到我的预期结果,但是这之后不是得自己管理内存了这样不是很不方便,再说这样的做的理由是什么呢??

我在网上找了半天,发现没有找到,哎!百度真心不行啊,于是我想用google试下,经验告诉我百度解决不了的google都帮我解决了,但是很伤心google用不了啊,谁叫我们是和谐的社会主义呢~没办法继续用百度,嘻嘻!功夫不负有心人,还真叫我找到了一些。是一个外文论坛:stackoverflow。全是英文,不过还好我还看的懂。大概是说在参数中用了一个指针类型的变量,所以我们必须在ARC环境中声明这个指针的所有权,一般又四中可选的参数:

  • __strong
  • __weak
  • __unsafe_unretained
  • __autoreleasing 
通过声明之后,这个指针就可以在ARC的环境下内存管理(有关于内存管理所有权问题请看之后的内存管理)。

我的错误在于把一个__Strong强引用给了一个__unsafe_unretianed(或者__weak)的弱引用的参数,说这样会影响指针的内存管理,弱指针是不需要release和retain的。所以必须是把它改成一个可以内存管理的参数形式即用__strong。

void drawShapes(__strong id shapes[], int count)
{
    for(int i = 0;i < count;i++) {
        id shape = shapes[i];
        [shape draw];
    }
}

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、

<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------


Python全栈入门到实战【基础篇 05】核心基础:Python的2种运行模式(交互式+命令行式) Python代码运行模式详解:交互式与命令行式对比 摘要: Python提供两种核心运行模式:交互式(REPL)和命令行式(脚本式)。交互式模式适合快速测试语法,即时反馈结果,通过终端输入python启动,特点是无需保存、临时执行,适合验证小段代码逻辑。命令行式模式需将代码保存为.py文件后运行,适合开发完整程序,可重复执行和修改。两种模式各有优势:交互式便于学习调试,命令行式适合实际开发。掌握两种模式的使用场景和切换方法,是Python入门的关键技能,能显著提升学习效率。 阅读详情

相关推荐

(蓝桥杯)STM32G431RBT6(SysTick timer)

选用最基础的定时器。

2301_81764359的博客 1902

黑马程序员————OC中的ARC机制总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 什么是ARC? ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管 理,因为编译器为你处理了一切 ARC 是编译器特性,而不是 iOS 运

whymerain的专栏 432

华为防火墙双ISP出口实战:如何用策略路由实现电信联通流量自动切换(附配置截图)

本文详细解析了华为防火墙在双ISP环境下的智能选路技术,通过策略路由与健康检测的深度应用,实现电信联通流量的自动切换。文章包含实战配置截图,帮助企业解决切换延迟、路径劣化等核心挑战,提升业务连续性。

backprop5master的博客 643

黑马程序员---ARC

1.ARC:Automatic Reference Counting(自动引用计数器) 是iOS自5.0版本之后增加的新特性,会自动生成release,retain等语句,消除了手动管理内存写代码的繁琐和麻烦,ARC机制是编译器特性 ,不是运行时特性,也不是垃圾回收 2.ARC的判断准则:只要没有强指针指向对象,就会释放对象 指针分两种:强指针,默认情况下,所有的指针都是强指针_

Halo的专栏 484

微信数据库读取解密脚本 聊天记录查看工具,支持所有微信版本,后期将支持企业微信[Windows]

(1)获取微信昵称、微信账号、微信手机号、微信邮箱、微信KEY的基址偏移(2)获取微信的微信昵称、微信账号、微信手机号、微信邮箱、微信KEY、微信原始ID(wxid_******)(3)获取微信文件夹路径(4)支持查看聊天记录查看(5)根据key解密微信数据库(6)提供数据库部分字段说明(7)支持微信多开场景,获取多用户信息等(8)微信需要登录状态才能获取数据库密钥(9)支持导出聊天记录为html,备份微信聊天记录,方便查看(10)合并多个数据库,方便查看。

weixin_43101935的博客 1万+

大语言模型无代码构建知识图谱概述

由示例可以看出,大语言模型的泛化能力能够非常精准的抽取文本中的实体、关系等知识信息。其能够大大提升知识提取的效率与准确性。HuggingFists低代码平台的出现进一步促进了知识图谱构建的效率。它大幅降低了知识图谱构建人员的技术要求,使得从事该工作的人员有了更大的选择范围。不断下降的构建成本,意味着可以有更多的客户享受到知识图谱带来的业务价值。

colorknight的专栏 1817

黑马程序员-IOS-OC基础-ARC

-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------

我的博客 686

从M.2到E1.S,从U.2到E3.S:数据中心SSD接口的世代更迭与选择逻辑

本文深入探讨了数据中心SSD接口从M.2、U.2到E1.S、E3.S的演进历程与选型逻辑。通过对比分析不同接口的物理规格、性能表现和散热设计,揭示了EDSFF接口在数据中心环境中的优势,包括更高的部署密度、更好的散热效能和更强的扩展能力。文章还提供了针对不同应用场景的SSD选型建议,帮助IT决策者优化存储架构。

weixin_33816300的博客 417

黑马程序员——OC---ARC

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- ARC是一个编译器特征,它提供了对OC对象自动管理内存。ARC让开发者专注于感兴趣的代码和对象的关系,而不用考虑对象的retain和release。ARC在编译时期添加代码,保证对象可用。概念上说,ARC遵循手动引用计数的规则,替开发者,在编译时期添加合适的代码。Xcode提供了一个工具:自动

lost607的专栏 464

使用 MATLAB/Simulink 构建一个多时间尺度下的微电网经济运行优化策略模型

本文介绍了基于Simulink的多能互补微电网系统建模方法,重点关注多时间尺度下的经济运行优化策略。内容包括:系统背景与目标、微电网结构设计(光伏、风电、储能、柴油发电机等模块)、多时间尺度能量管理架构(日前优化、日内滚动优化、实时控制)的实现步骤,以及仿真运行与结果分析。教程详细说明了如何在Simulink中调用优化算法,设置仿真参数,并提供了进阶研究方向和资源推荐。该模型为研究微电网的经济运行和智能调度提供了完整的仿真平台解决方案。

amy_mhd的博客 172

手把手教你学Simulink--基于高频与高速信号处理的滤波器场景实例:毫米波雷达中匹配滤波器的多目标分辨仿真

在自动驾驶、智能交通和工业感知等领域,毫米波雷达(mmWave Radar)因其高分辨率全天候工作和抗电磁干扰能力,成为关键的感知传感器。其核心信号处理算法之一是匹配滤波器(Matched Filter),用于在强噪声背景下最大化信噪比(SNR),实现对微弱目标的检测。在调频连续波(FMCW, Frequency-Modulated Continuous Wave)雷达中,发射信号为线性调频(Chirp)信号。当信号遇到多个目标时,回波是多个延迟版本的叠加。

MHD0815的博客 134

黑马程序员-ARC,Block与protocol

Arc(Atuomatic Reference Counting) (自动化的  引用  计数) 1,基本简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入 适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切   ARC 是编译器特性,而不是 iOS 运行时特性,它

cao4744的专栏 458

YOLO11涨点优化:原创自研 | 魔改Bottleneck,具备多尺度和特征通道融合的结构

可以将C3k2_MSAMCS放在neck,或者backbone和neck同时修改,具体看自己数据集的涨点情况决定

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1651

黑马程序员_OC_ARC机制

ARC的判断准则:只要没有强指针指向对象,就会释放对象      1.ARC特点  1> 不允许调用release、retain、retainCount  2> 允许重写dealloc,但是不允许调用[super dealloc]  3> @property的参数   * strong :成员变量是强指针(适用于OC对象类型)   * weak :成

huangchen_wyx的专栏 462

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

黑马程序员学习笔记_OC之内存管理3ARC

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 黑马程序员学习笔记_内存管理3ARC 1、ARC简介 ARC是自iOS5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因

yangying514的专栏 781

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

黑马程序员—19-oc关于ARC

-------android培训、java培训、期待与您交流! ---------- 一、基本简介 ØARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切 ØARC是编译器特性,而不是iOS运...

weixin_34029680的博客 110

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

黑马程序员--OC内存管理机制(下)之ARC

三、关于ARC(Auto reference counting)自动引用计数     1、基本简介     ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切     ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于

qq_17490915的专栏 817

黑马程序员——Objective-C——内存管理、ARC

———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———

cao_zhichao的专栏 588

黑马程序员--ios基础--oc-内存管理之ARC、Block

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  一.基本简介 ARC是iOS 5之后增加的新特性,完全消除了手动管理内存的烦恼,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再续奥担心内存管理,因为编译器为你处理了一切ARC是编译器特性,而不是ios 运行时特性,它也不是类似于其

yuanptt的博客 588

黑马程序员_IOS内存管理学习总结(三)

一.Automatic Reference Count(ARC) 1.介绍  1>ARC也就是自动引用计数,是自IOS 5之后增加的新特性,编译器会在适当的地方插入适当的retaini、release、autorelease内存管理代码,完全消除了手动管理内存的繁琐。  2>ARC是OC的编译器特性,而不是IOS运行时特性,它也不类似其他语言中的垃圾回收器。就是在编译器编译代码的

PerfectW_1230的专栏 630

黑马程序员_OC语言的内存管理2

iOS,Android,Java培训,期待与您的交流 1    循环引用 利用retain,release方法,可以解决绝大部分的内存管理问题。但是,有一种的特殊的情况需要引起注意。那就是循环引用,比如A对象retain了B对象,B对象retain了A对象;这样会导致A对象和B对象永远无法释放。 解决方案:当两端互相引用时,应该一端用retain、一端用assign//Person.h @i

Anzeron 674

24-黑马程序员------OC 语言学习笔记--- autorelease和ARC

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------- autoreleaseOC提供了autorelease语法,系统可以將很多对象放到一个自动释放池中,在某个时刻统一release一次。这样就不用再次调用...

weixin_34326179的博客 168

黑马程序员-IOS-OC基础-内存管理

-------------------------------------- android培训、java培训、ios培训期待与您交流! --------------------------------- iOS下内存管理的基本思想就是引用计数,通过对象的引用计数来对内存对象的生命周期进行控制。具体到编程时间方面,主要有两种方式: 1:MRR(manual reta

qq_25027273的专栏 482

黑马程序员_OC中的内存管理

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 内存管理是程序设计中常见的资源管理的一部分。每个程序都会消耗内存。我们必须确保在需要的时候分配内存,在程序运行结束的时候释放占用的内存。如果只分配而不释放,就会发生内存泄漏:程序的内存占用量不断增加,最终会被耗尽而导致程序崩溃。同样

conpgy的专栏 851

黑马程序员----第七篇 OC内存管理(二)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   三、autorelease总结 1、简介 1>给某个对象发送一条autorelease消息时,就会将这个对象加到一个自动释放池中。 2>当自动释放池销毁时,会给池子里面的所有对象发送一条release消息。 3>调用autorelease方法时并不

我的专栏 411

小白也能快速上手?6大主流AI绘画工具使用教程大公开!

你有没有发现,最近无论打开手机还是电视,处处都在宣传AI?简直就是席卷全球的科技新风潮!我就是被这股浪潮裹挟着,决心把AI写作和AI绘画好好学习一番。老实说,一开始我也曾对AI的能力半信半疑,但现在亲身体验之下,越发被它强大的创作力给震惊了!

2401_84830464的博客 1716
上一篇: 黑马程序员 iOS开发常用国外网站清单(转载)
下一篇: 黑马程序员 C语言的字符数组和字符指针
MeditatingPig
博客等级 码龄12年 3粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值