招聘靠谱程序员系列:5 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(三)SD卡驱动、FatFS等的移植和ini配置文件读取的实现 本文实现了基于STM32F107VC的金牛开发板的基于SPI模式的SD卡驱动和FatFS的移植,以及利用minini库对ini配置信息文件进行读取。 阅读详情

答:

1)、让自己的类可以使用copy修饰符的步骤:

a)、让自己的类遵循NSCopying协议
b)、实现NSCopying协议中必须实现的代理方法:
    - (id)copyWithZone:(NSZone *)zone;
示例代码:
- (id)copyWithZone:(NSZone *)zone {
    //创建实例的方式比较特殊
    Person *p = [[[self class] allocWithZone:zone] init];   
    
    p.name = self.name;
    p.age = self.age;
    
    return p;
}

2)、如何重写带copy关键字的setter:

- (void)setName:(NSString *)name {
    //[_name release];
    _name = [name copy];
}

tips:

Copy & MutableCopy

使用copy或mutableCopy方法可以创建一个对象的副本

  • copy
    需要实现NSCoppying协议
    这些创建的是不可变副本(如NSString、NSArray、NSDictionary)
  • mutableCopy
    需要先实现NSMutableCopying协议
    创建的是可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary)
  • copy的目的是建立副本,同时修改原始对象和复本不会互相干扰
查看上篇博客,了解更多关于深复制 & 浅复制的内容
  • 深复制:
    内容拷贝,源对象和副本指向的是不同的两个对象
    源对象引用计数器不变,副本计数器设置为1

  • 浅复制:
    指针拷贝,源对象和副本指向的是同一个对象
    对象的引用计数器+1,其实相当于做了一次retain操作

结论:只有不可变对象创建不可变副本(copy)才是浅复制,其他都是深复制

自主探索型AI Agent:LLM驱动的好奇心与学习动机 随着人工智能技术的飞速发展,传统的AI系统往往依赖于预设的规则和大量的标注数据,其自主学习和适应新环境的能力有限。自主探索型AI Agent旨在打破这种局限,能够在复杂、未知的环境中自主地进行探索、学习和决策。本文的目的是深入研究在大语言模型(LLM)驱动下,AI Agent如何产生好奇心和学习动机,以及如何实现自主探索的能力。范围涵盖了核心概念、算法原理、数学模型、项目实战、应用场景等多个方面,为读者提供一个全面的技术视角。本文将按照以下结构进行阐述:首先介绍相关背景知识,包括目的、读者和文档结构; 阅读详情

相关推荐

华为云CodeHub保姆级教程:从零开始,5分钟搞定本地代码上传(含常见报错解决)

本文提供华为云CodeHub的保姆级教程,从零开始5分钟完成本地代码上传,涵盖环境准备、仓库创建、远程连接及常见报错解决。特别适合新手开发者快速掌握Git命令与云端协作流程,确保代码安全高效上传。

weixin_30443075的博客 480

如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter

出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙,目前就职于滴滴出行。 若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying 与 NSMutableCopying 协议。     具体步骤: 需声明该类遵从 NSCopying 协议实现 NSCopying 协

我叫MT 3810

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理

软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提...

weixin_52127098的博客 9003

iOS 经典全部面试题(上)(1),2024年最新华为od面试经历

回到这个题目,如果单单就上文的代码而言,我们不需要也不能重写 name 的 setter :由于是 name 是只读属性,所以编译器不会为其创建对应的“设置方法”,用初始化方法设置好属性值之后,就不能再改变了。用 weak 指向的对象内存地址作为 key,当此对象的引用计数为0的时候会 dealloc,假如 weak 指向的对象内存地址是a,那么就会以a为键, 在这个 weak 表中搜索,找到所有以a为键的 weak 对象,从而设置为 nil。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。

2201_75604341的博客 1279

保姆级教程:用Wireshark抓包分析10M汽车以太网PLCA轮询机制(附pcap文件)

本文详细介绍了10M汽车以太网PLCA轮询机制的抓包分析与性能优化方法。通过Wireshark实战教程,解析PLCA协议的时分多址特性、总线型拓扑结构及带宽优化策略,帮助工程师提升车内网络的可靠性和实时性。附赠pcap文件供实践参考。

wdx01234567的博客 239

添加odbc数据源时的一些问题和解决办法

pl/sql

Mr_Syh的博客 9642

OC基础--@property修饰符

【1】atomic和nonatomic、assign、copy和retain的定义与区别 设置cheng'y

红尘一傻帽的专栏 1501

【Java 实战】通过Redis实现购物车功能

以上就是今天要讲的内容,本文仅仅简单介绍了如何通过Redis实现购物车功能,以上方法亲测有效,希望能给大家一个参考。

~~~~~~~BUG FLY~~~~~~~~~ 9969

学习(4)

5. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter? 若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying 与 NSMutableCopying 协议。 具体步骤: 需声明该类遵从 NSCopying 协议 实现 NSCopying 协议。该协

学如逆水行舟,不进则退 1230

【2025华为OD机考真题】- 简易内存池(B卷-200分)(C版)

🔔本文收录于「最新最全华为OD机试真题(C版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅

**My Coding Family** 961

EtherCAT从站EEPROM组成信息详解(2):字8-15产品标识区

以实际的从站EEPROM数据为例,参照EtherCAT的SII规范,详细分析了从站EEPROM字8-字15的产品标识区内容组成。

kevin1499的博客 718

iOS中copy属性与setter赋值

这样定义时,下面两种写法会是什么结果 ? @property (copy) NSMutableArray* test;写法1 NSMutableArray* arr = [NSMutableArray arrayWithObjects:@1,@2, nil]; self.test = arr; [self.test removeObjectAtIndex:0];写法2 NSMutable

Superman的专栏 3232

LVGL core group焦点分组管理(lv_group.c)

lv_group_t是用于焦点管理的,将需要获取焦点的对像加入到同一个分组内,再将其通过挂到指定的事件驱动中,就可以控制焦点了。而被加入的对象又可以通过焦点状态事件和事件来控制对象的焦点逻辑了。创建好的分组通过接口挂事件驱动中,这样就可以指定一个自定义的焦点分组了。;) {if(!} }友情提示:无论是接口还是都是单例的,即被设置后前一个被设置的值就失效了;此方案可以保证焦点的唯一 性,但也一定要记住要在适合的位置设置回来,以防丢失焦点。

Bigan(安)的博客 3907

招聘一个靠谱的程序员系列,持续更新中......

招聘靠谱程序员系列:1 代码风格优化与纠错 招聘靠谱程序员系列:2 什么情况使用 weak 关键字,相比 assign 有什么不同? 招聘靠谱程序员系列:3 怎么用 copy 关键字? 招聘靠谱程序员系列:4 这个写法会出什么问题: @property (copy) NSMutableArray *array 招聘靠谱程序员系列:5 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字...

weixin_34309435的博客 230

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

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

jre9下载 jdk9

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

iOS开发怎么使用copy关键字

使用场景; (1)、NSString、NSArray、NSDictionary等经常使用copy关键字         原因:NSString、NSArray、NSDictionary等有其相对应的可变类型,NSMutableString、NSMutableArray、NSMutableDictionary,当使用retain关键字时,                 只是复制了一个指针,当

ciwei_numberOne的博客 2548

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

《招聘一个靠谱的iOS》面试题参考答案

来源地址: http://www.cocoachina.com/ios/20150803/12872.html http://blog.sunnyxx.com/2015/07/04/ios-interview/ 出题者简介: 孙源(sunnyxx),目前就职于百度,负责百度知道 iOS 客户端的开发工作,对技术喜欢刨根问底和总结最佳实践,热爱分享和开源,维护一个叫 forking

csdn15150525313的博客 926

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Objective-c之NSCopying

copy的原理:  执行协议,类中必须实现copyWithZone:方法响应的copy消息。   copy消息将发送copyWithZone:这个消息给你的类,它的参数是nil。  copyWithZone:返回一个不可改变的copy   *MyPoint.h*/ #import @interface MyPoint : NSObject//继承超类 { int x;

5102

MRC环境下语义特性为assign retain copy时,setter和getter方法

1,当把语义特性声明为assign时,setter和getter时方法内部实现- (void)setName:(NSString *)name{ _name = name; }- (NSString *)name{ return _name; }2,当把语义特性声明为retain时,setter和getter方法内部实现- (void)setName:(NSString *)name{

FreeTourW的博客 1566

有关copy关键字的一些问题

整理的一些有关copy关键字的解释、用法及相关注意事项。

ybcy0612的博客 645

RabbitMQ 面试题

你发一条消息,在网络上并不是一个整体飞过去的。如果消息比较大,RabbitMQ 的底层协议会把它切成多个数据包(帧),按顺序发送,Broker 收到后再拼起来。假设线程 T1 和 T2 同时用同一个 Channel 发消息:T1 发消息 A,被切成三个帧:[A1] [A2] [A3]T2 发消息 B,也被切成三个帧:[B1] [B2] [B3]如果没有任何保护,这两个线程的帧可能交错到达 Broker,变成 [A1] [B1] [A2] [B2] [A3] [B3]。

互联网叫兽 509

基于 TVM Relax BYOC 扩展 Example NPU 后端:从跑通官方流程到自定义算子融合

至于 codegen 要不要补,取决于 Example NPU 的实现细节——先跑通分区验证,再决定是否深入 codegen,是更稳妥的路径。而「扩展一个原本不支持的融合模式」这件事,恰好能证明你不是照着教程抄了一遍,而是真的理解了 BYOC 的分区规则是怎么工作的。),那么新模式即使被切出来,codegen 阶段也可能报「不支持的算子」。如果 Example NPU 的 codegen 是「按算子名硬编码」的,那么新模式切出来之后,这句话本身没问题,但偏「结果导向」,面试官会追问细节。

Maxwell_Newton的博客 287

smart-tunnel-ai · 隧道/高速智慧化 AI 应用项目

面向的工程师:一个能跑通、能改、能讲清楚的 Spring Boot + Spring AI 项目。:它不是「调了个 ChatClient 输出一句话」,而是把切块策略、增量入库、来源溯源、防幻觉、工具调用、结构化输出、评估集、密钥守卫、CI 护栏这些工程问题都落到了代码里。每一处都能指向具体类讲取舍。详见。

futurn_hero的博客 281

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 207

Spring 原理高频面试题全解:Bean 生命周期、三级缓存与 @Transactional 失效(2026 招聘 JD 真题复盘)

按 2026 招聘 JD 与一线面经整理 10 道 Spring 高频题:Bean 生命周期与扩展点顺序、AOP 代理生成时机、三级缓存为何必须三级、构造器注入循环依赖为何无解、@Transactional 六类失效与自调用修复三法、REQUIRES_NEW 连接池耗尽风险、事件总线同步语义与 @TransactionalEventListener、自动配置从 spring.factories 到 imports 的演进、自定义 Starter 三步走,附速查表与三条追问链。

蒙眼过河 316

Docker镜像优化:面试高频翻车的简单题

本文深入探讨Docker镜像优化的两大核心层面:体积优化与构建速度优化。指出仅关注镜像瘦身(如使用Alpine)是表面理解,真正关键在于平衡空间与时间——在DevOps流水线中,构建速度常优先于体积。文章详解了多阶段构建、缓存利用、.dockerignore文件等高效策略,并揭示Alpine镜像虽小但存在兼容性、依赖缺失等风险,强调需结合业务场景权衡选择。掌握这些细节,方能在面试中展现真实技术深度,脱颖而出。

java后端架构 209

从 MLIR Toy Tutorial 到自定义硬件方言 Pass:一份 AI 编译器面试项目实战指南

AI 编译器岗位的面试,通常不会只问你「什么是算子融合」这种概念题,而是会顺着简历上的项目往下挖:你写的这个 Pass 解决了什么问题?IR 是怎么设计的?lowering 的边界在哪?为什么这里要插一个 Op 而不是直接生成循环?一个基于 MLIR 的小项目,恰好能覆盖这些追问点。它足够「真」——你能讲清楚 IR、Dialect、Pass、Lowering 的完整链路;又足够「小」——不需要真的去写一个后端,也不需要跑在真实硬件上。先讲 MLIR 的核心思想、分层设计和功能;

Maxwell_Newton的博客 336
上一篇: 招聘靠谱程序员系列:4 这个写法会出什么问题: @property (copy) NSMutableArray *array
下一篇: 招聘靠谱程序员系列:6 @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的?
SuAdrenine
博客等级 码龄11年 6粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值