当前位置: 首页 > news >正文

iOS object-c self关键字总结

在Objective-C中,self 关键字是一个指向当前对象的指针。它是对象自身实例的别名,通常在对象内部的方法中使用,以提供一个指向当前对象的引用。使用 self 可以帮助你访问对象的属性和方法,特别是在处理消息传递和方法调用时。

以下是 self 关键字的一些常见用途:

  1. 访问对象的属性

    - (void)setSomeProperty:(NSString *)newValue {self.someProperty = newValue;
    }
    
  2. 在方法内部调用其他方法

    - (void)doSomething {[self doSomethingElse];
    }
    
  3. 在初始化方法中

    - (instancetype)init {self = [super init];if (self) {// 初始化代码}return self;
    }
    
  4. 在dealloc方法中

    - (void)dealloc {// 清理代码,例如释放对象持有的其他对象[self release];
    }
    
  5. 在block中使用

    __block __weak typeof(self) weakSelf = self;
    void (^myBlock)(void) = ^{[weakSelf doSomething];
    };
    
  6. 在代理和回调中

    id<Delegate> delegate = self;
    
  7. 在响应链中

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {[[self delegate] alertView:alertView clickedButtonAtIndex:buttonIndex];
    }
    

使用 self 可以提高代码的可读性,特别是当你需要明确指出是在操作当前对象时。此外,当在一个对象的方法内部使用 self 时,它也有助于避免潜在的编译器警告,尤其是在涉及对象初始化的情况下。

需要注意的是,在block中使用 self 时,应该使用 __block__weak 修饰符来避免强引用循环(retain cycle)。__block 用于在block内部修改变量的值,而 __weak 用于防止block捕获对象的强引用,从而避免内存泄漏。

相关文章:

iOS object-c self关键字总结

在Objective-C中&#xff0c;self 关键字是一个指向当前对象的指针。它是对象自身实例的别名&#xff0c;通常在对象内部的方法中使用&#xff0c;以提供一个指向当前对象的引用。使用 self 可以帮助你访问对象的属性和方法&#xff0c;特别是在处理消息传递和方法调用时。 以…...

京东云16核64G云服务器租用优惠价格500元1个月、5168元一年,35M带宽

京东云16核64G云服务器租用优惠价格500元1个月、5168元一年&#xff0c;35M带宽&#xff0c;配置为&#xff1a;16C64G-450G SSD系统盘-35M带宽-8000G月流量 华北-北京&#xff0c;京东云活动页面 yunfuwuqiba.com/go/jd 活动链接打开如下图&#xff1a; 京东云16核64G云服务器…...

hive管理之ctl方式

hive管理之ctl方式 hivehive --service clictl命令行的命令 #清屏 Ctrl L #或者 &#xff01; clear #查看数据仓库中的表 show tabls; #查看数据仓库中的内置函数 show functions;#查看表的结构 desc表名 #查看hdfs上的文件 dfs -ls 目录 #执行操作系统的命令 &#xff01;命令…...

cpp 内存分区模型

c程序在执行前&#xff0c;将内存大方向划分为4个区域。 1.代码区&#xff1a;存放函数的二进制代码&#xff0c;有操作系统进行管理 2.全局区&#xff1a;存放全局变量和静态变量以及常量 3.栈区&#xff1a;由编译器自动分配释放&#xff0c;存放的函数参数和局部变量 4.…...

44.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色创建服务器反馈数据包分析

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…...

web安全学习笔记(6)

记一下第十节课的内容。 一.PHP语言中的if else判断 语法和c语言中非常类似&#xff0c;不再赘述&#xff0c;也可以使用if...elseif...elseif...else 1.True和False 2.&#xff0c;和 一个等号是赋值 两个等号是比较 三个等号是全等&#xff08;内容相等&#xff0c;数…...

揭秘“二次放号查询接口”:为您的通信安全保驾护航

在信息化社会中&#xff0c;手机号码已成为我们日常生活中不可或缺的身份标识。然而&#xff0c;您是否了解过“二次放号”这一现象&#xff0c;以及它可能对您的信息安全带来的影响&#xff1f;今天&#xff0c;我们将为您揭开“二次放号查询接口”的神秘面纱&#xff0c;揭示…...

字节8年经验之谈 —— 如何实现高效的自动化渗透测试?

随着当前网络安全威胁的不断扩展与升级&#xff0c;开展渗透测试工作已经成为广大企业组织主动识别安全漏洞与潜在风险的关键过程。然而&#xff0c;传统的人工渗透测试模式对测试人员的专业能力和经验水平有很高的要求&#xff0c;企业需要投入较大的时间和资源才能完成。在此…...

ElasticSearch分词检索

1. 倒排索引&#xff1a;表示一种数据结构&#xff0c;分词词条与文档id集合的隐射关系 2. 它跟关系型数据库是一种互补的关系&#xff0c;因为关系型数据库支持事务操作&#xff0c;满足ACID原则 3. 索引库的文档字段只允许新增不允许修改 1.创建索引库 put /索引库名称2.1 …...

每日三道面试题之 Java并发编程 (四)

1.什么是线程死锁 线程死锁是并发编程中一个常见问题&#xff0c;它发生在两个或多个线程永久性地阻塞彼此&#xff0c;等待对方释放锁&#xff0c;但没有任何一方先行释放锁的情况下。简单来说&#xff0c;每个线程都持有对方需要的资源而等待对方释放资源&#xff0c;导致所…...

ubuntu20.04.6将虚拟机用户目录映射为磁盘Z

文章目录 linux虚拟机设置为NAT模式安装sshd服务映射目录到windows磁盘安装samba套件修改配置文件smb.conf重启smbd并设置用户名和密码 windows映射遇到的问题1、设置好之后映射不成功2、smbd下载失败3、smbd密码配置问题4、当有改动时候&#xff0c;最好重启一下smbd服务 linu…...

TCP挥手中TIME_WAIT存在的原因

四次挥手的一般过程如图所示&#xff1a; 在客户端收到FIN结束报文的时候不是立刻进入CLOSED状态&#xff0c;而是进入TIME_WAIT状态&#xff0c;一般等2MLS后进入关闭状态。 原因&#xff1a; 1.可靠地终止 TCP 连接。 2.保证让迟来的 TCP报文段有足够的时间被识别并丢弃。 …...

使用Docker部署jar包

vi DockerfileDockerfile内容 FROM java:8 ADD chery5G-admin.jar chery5G-admin.jar ENTRYPOINT ["java","-jar","chery5G-admin.jar"]上传jar包到Dockerfile文件同级目录 使用Dockerfile文件&#xff0c;将jar包制作为镜像 docker build -t…...

深入了解WebKit:结构简介

随着互联网的发展&#xff0c;网页浏览器已经成为我们日常生活中不可或缺的工具之一。而在众多浏览器中&#xff0c;WebKit引擎作为其中之一的重要角色&#xff0c;驱动着一系列流行的浏览器&#xff0c;例如Safari和一些移动端浏览器。那么&#xff0c;WebKit究竟是如何构建的…...

Pgsql怎样找到表中某个字段值重复的记录并删除冗余记录,只保留一条

背景 今天发现某个黄页爬取的数据有部分重复了&#xff0c;原本我用的公司详情页的url进行md5来作为主键做upsert入&#xff0c;但后面在核验数据时发现有些详情url虽是同一间公司的&#xff0c;但路由上有细微差别导致写入了重复的公司数据&#xff0c;所以要想办法清理掉重复…...

如何在HarmonyOS(鸿蒙操作系统)上进行应用开发

文章中提到的关键点包括&#xff1a; 学习ArkTS&#xff1a;作者建议初学者首先学习使用ArkTS编写Hello World程序&#xff0c;并可以通过TypeScript教程来快速掌握基础语法。对于有Flutter或React Native开发经验的开发者来说&#xff0c;页面布局会比较容易上手。 页面布局&…...

C++ typeid运算符介绍

在 C++ 中,typeid() 是一个运算符,用于获取表达式的类型信息。typeid() 运算符在 C++ 中是一个强大的工具,可以用于获取对象的类型信息、类型比较、多态类型判断、异常处理以及类型转换安全检查等场景中。 1. 类型比较: 可以使用 typeid() 来比较两个类型是否相同。 if …...

Android适配平板屏幕尺寸

一、划分手机和平板 人为判断方法: 大于6英寸的就是平板。小于6英寸的都是手机 平板尺寸&#xff1a; 6英寸、7英寸、10英寸、14英寸… Android系统支持多配置资源文件&#xff0c;我们可以追加新的资源目录到你的Android项目中。命名规范&#xff1a; 资源名字-限制符 l…...

汽车充电桩主板在出厂前需要做哪些检测?

充电桩主板作为核心组件承载着充电桩的关键功能&#xff0c;其性能和稳定性直接影响着用户充电体验、桩企产品合规和市场竞争力&#xff0c;以及主板厂商的品牌知名度。因此&#xff0c;对充电桩主板进行全面的测试尤为重要。 下面将详细介绍充电桩主板检测的内容&#xff0c;包…...

关于Renesas R7 的选项字节开关看门狗

Renesas看门狗的模式是在选项字节中进行配置的&#xff0c;OPBT0的寄存器说明如下&#xff0c; 关于看门狗模式 &#xff1a; 和看门狗喂狗方式&#xff1a; 我们选择关闭看门狗&#xff08;也就是配置31位为软件触发看门狗开始&#xff0c;然后不启动就相当于关闭&#xff09…...

Isaac Sim物理参数全解析:从碰撞器到SDF的实战配置指南

Isaac Sim物理参数全解析&#xff1a;从碰撞器到SDF的实战配置指南 在机器人仿真和虚拟环境构建领域&#xff0c;物理参数的精确配置往往是决定仿真效果真实性的关键因素。NVIDIA Isaac Sim作为业界领先的机器人仿真平台&#xff0c;其物理引擎提供了丰富的参数体系&#xff0…...

抖音直播回放下载工具:高效保存与智能管理解决方案

抖音直播回放下载工具&#xff1a;高效保存与智能管理解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代&#xff0c;精彩的直播内容稍纵即逝&#xff0c;如何永久保存这些宝贵的…...

MySQL基础运维:日志基础之慢查询日志与错误日志 | 作用、配置与查看方法全实战

本文承接MySQL运维系列内容&#xff0c;聚焦新手入门运维最刚需的两大核心日志&#xff1a;错误日志、慢查询日志。 很多新手学习MySQL时&#xff0c;都会遇到两个最头疼的问题&#xff1a;一是MySQL启动失败、运行报错&#xff0c;完全不知道去哪找原因&#xff1b;二是SQL执行…...

Echarts 数据大屏实战:150套模板助力企业级可视化开发

1. 为什么企业需要Echarts数据大屏&#xff1f; 在数字化转型的浪潮中&#xff0c;数据可视化已经成为企业决策的重要工具。想象一下&#xff0c;当你的老板需要在3秒内了解公司当月销售情况、用户增长趋势和库存状态时&#xff0c;密密麻麻的Excel表格显然不是最佳选择。这时…...

Lingbot-Depth-Pretrain-Vitl-14 结合Transformer架构:深度估计模型优化实战

Lingbot-Depth-Pretrain-Vitl-14 结合Transformer架构&#xff1a;深度估计模型优化实战 深度估计&#xff0c;简单来说&#xff0c;就是让计算机从一张普通的2D图片里&#xff0c;“猜”出每个像素点距离相机的远近。这听起来有点像我们人眼在看世界时&#xff0c;能感知到的…...

C# Enumerable类 之 高效数据转换实战指南

1. 为什么需要数据转换&#xff1f; 在C#开发中&#xff0c;我们经常会遇到需要处理不同类型数据集合的场景。比如从数据库读取的数据可能是object类型&#xff0c;或者老项目中还在使用非泛型的ArrayList。这时候就需要将这些"原始"数据转换成我们需要的特定类型&am…...

PyTorch/TensorFlow张量加速实战:3个被90%工程师忽略的底层CUDA内核调优技巧

第一章&#xff1a;PyTorch/TensorFlow张量加速实战&#xff1a;3个被90%工程师忽略的底层CUDA内核调优技巧CUDA流与默认流解耦&#xff1a;避免隐式同步瓶颈 PyTorch 和 TensorFlow 默认将所有 CUDA 操作提交至默认流&#xff08;null stream&#xff09;&#xff0c;导致跨 k…...

DAMOYOLO-S边缘端部署指南:STM32F103C8T6嵌入式平台推理优化

DAMOYOLO-S边缘端部署指南&#xff1a;STM32F103C8T6嵌入式平台推理优化 1. 引言 如果你正在为一个资源极其有限的嵌入式设备寻找一个能跑起来的目标检测方案&#xff0c;比如用一块小小的STM32F103C8T6开发板&#xff0c;那么这篇文章就是为你准备的。你可能已经尝试过一些经…...

提升数据抓取效率:用快马AI生成openclaw命令自动化脚本模板

最近在做一个数据抓取项目时&#xff0c;发现手动写openclaw命令实在太费时间了。每次都要重复写类似的fetch和parse命令&#xff0c;还要处理各种异常情况。后来发现用InsCode(快马)平台可以快速生成自动化脚本模板&#xff0c;效率提升了好几倍。今天就把这个经验分享给大家。…...

macOS专属方案:OpenClaw+nanobot镜像的5个效率技巧

macOS专属方案&#xff1a;OpenClawnanobot镜像的5个效率技巧 1. 为什么选择OpenClawnanobot组合 作为一个长期使用macOS的开发者&#xff0c;我一直在寻找能够提升日常工作效率的自动化工具。直到遇到OpenClaw和nanobot这个组合&#xff0c;才真正找到了适合个人使用的智能助…...