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

极智AI | 谈谈为什么卷积加速更喜欢 NHWC Layout 本文主要讨论一下为什么卷积加速更加喜欢 NHWC 的数据排布。 阅读详情

答:

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)才是浅复制,其他都是深复制

微信小程序 - 最新实现项目适老化设计全流程及源码,老年模式大字版与常规版页面样式切换,老年人大字模式字体与布局更换关怀版解决方案(新老项目均适用的方案,全局页面统一修改文本字号/DOM排版元素等) 微信小程序,vue2,vue3,老年大字版设计,小程序开发如何实现适老化方案,放大字体字号及改变页面的布局,小程序关怀模式实现思路及代码,统一将布局都改了,全局修改字体大小适配老年人看不清问题,小程序怎么接入老年模式并根据模式改变页面的UI设计,实现全局修改字体大小适老化/关怀版改造,最新详细示例代码全流程,字体放大/缩小,老项目怎么适配老年人模式方案,小程序适老化设计指南,当切换成老年模式时页面所有排版都会发生变化,小程序vue开发,新手详细教程,老年模式字体设置思路和UI布局的设计,开发者可以通过wx. 阅读详情

相关推荐

解密高并发系统的瓶颈:五大解决方案

在互联网应用中,高并发是指在短时间内同时有大量的用户访问一个网站或服务,造成系统压力过大,导致服务器宕机或服务停止响应的情况。高并发是互联网应用面临的一个重要问题,需要采取一系列措施来解决。负载均衡、缓存、数据库优化、异步处理和分布式架构是解决高并发问题的主要方法。在实际应用中,需要根据具体情况选择不同的方法来解决高并发问题。在高并发情况下,使用负载均衡是解决问题的一种常见方法。负载均衡可以通过将请求分配到多个服务器上,从而减少单个服务器的负载。这可以通过硬件设备或软件实现。

BUG制造者:图图 <p>这是一个P标签</p> 3903

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

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

我叫MT 3810

为什么Nano Banana在图像一致性上碾压GPT和豆包?深度解析其技术原理与使用技巧

本文深度解析了Nano Banana在图像一致性上超越GPT和豆包等工具的技术原理。它通过基于参考图的强条件生成、精准的区域感知与掩码控制等核心技术,实现了“外科手术式”的精准图像编辑。文章还分享了包括提示词工程、参数调整在内的实用技巧,并探讨了通过API Key将其能力集成到自动化工作流中的潜力。

omega的博客 356

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

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

2201_75604341的博客 1279

Qt Location实战:5分钟搞定地图插件切换与卫星图源加载(附完整代码)

本文是Qt Location开发系列教程的实战指南,详细讲解如何在Qt应用中快速实现地图插件(如Esri、OSM、MapboxGL)的动态切换与卫星图源的加载。通过清晰的代码示例,帮助开发者理解插件机制,解决常见配置问题,并在5分钟内构建出具备交互式地图切换功能的应用程序。

kafka6courier的博客 524

CH7034B显示模块原理图设计,已量产

显示桥接板的价值,不在于简单把 RGB 排线换成另一种接口,而在于能否把并行视频、时钟、显示控制、模拟输出和辅助配置同时组织成稳定系统。当前这张 CH7034B 原理图就是这种思路:U3 CH7034B 作为核心桥接芯片,输入侧是 LCD_R0~R7、LCD_G0~G7、LCD_B0~B7、LCD_DE、LCD_HSYNC、LCD_VSYNC、LCD_CLK 与 LCD_BL,输出侧则通过 DAC0~DAC2 和 DDC_SC/DDC_SD 形成模拟显示接口边界。

不脱发的程序猿 161

OC基础--@property修饰符

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

红尘一傻帽的专栏 1501

BMP390L数字大气压传感器原理图设计,已量产(压力传感器)

在工业设备的室内定位、地下设施监测这类 GPS 信号盲区场景里,气压高度检测的 “靠谱程度” 直接决定了系统的可用性 —— 毕竟谁也不想在地下停车场导航时,设备把 1 楼误判成 3 楼。最近在项目里基于博世 BMP390L 做了硬件电路设计,正好聊聊这款工业级数字气压传感器的硬实力,以及原理图里的那些关键设计细节。

不脱发的程序猿 350

学习(4)

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

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

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测

时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测 目录时间序列预测 | Python实现ARIMAX和VARMAX时间序列数据预测基本介绍ARIMAXVARVARMAVARMAXSESHWES参考资料 基本介绍 本文介绍ARIMAX、VAR、VARMA和VARMAX基本概念及其Python程序设计。 ARIMAX 具有外源回归量的自回归整合移动平均值(ARIMAX)是 ARIMA 模型的扩展,其还包括外生变量的建模。 外生变量也称为协变量,可以被认为是并行输入序列,其在与

前程算法屋的博客 6688

搭建问答系统

数据描述 import docx import jieba from gensim.models import Word2Vec import os import numpy as np import pickle as pk import warnings from copy import deepcopy warnings.filterwarnings("ignore") from mu...

微信号:RunsenLiu 1840

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

AgentScope Java 2.0 项目实战: 从零构建自己的个人AI助手“小龙虾“

本文系统介绍如何基于Spring Boot WebFlux、React 18和TypeScript,从零搭建一个本地化的个人AI助手管理平台——AgentScope Paw。项目支持多Agent创建与管理、SSE流式对话、工作区文件CRUD、技能市场、子智能体孵化、AI辅助起草Agent配置等核心功能,并深度集成钉钉、企业微信、飞书、GitHub等IM通道。

program哲学 1424

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

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

weixin_34309435的博客 230

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

iOS开发怎么使用copy关键字

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

ciwei_numberOne的博客 2548

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

csdn15150525313的博客 926

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

AI 全栈开发工程师【二面】

传统的大模型应用通常采用:用户输入 → Prompt → LLM → 输出结果这种模式适合简单问答、文本生成和信息提取等任务。但对于复杂业务,仅依靠一次模型调用往往不够。例如,用户提出:帮我查询某个地区近三个月销量最高的产品,并分析销量变化原因。理解用户需求。拆解查询条件。调用数据库或外部工具。获取查询结果。分析数据。生成最终报告。Agent 的核心价值在于让大模型不仅能够生成文本,还能够根据任务目标进行规划、调用工具、观察执行结果,并根据结果调整后续行动。

qq_22841387的博客 451
上一篇: 招聘靠谱程序员系列: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、付费专栏及课程。

余额充值