self关键字

简介: self关键字 self:当前类/对象的指针(指向当前对象/方法调用者)作用1 当类里有变量名和成员变量名一样的时候,可以使用self区分例: 我们写一个人的类,有一个年龄属性,在get方法里,我们定义一个与成员变量同名的变量,并初始化一个值为10,如果我们return _age;,则返回的是10,并不是我们的成员变量_age,但是如果我们使用self指针获取_age,那么返回的就必定我们的成员变量_age了。

self关键字

self:当前类/对象的指针(指向当前对象/方法调用者)

作用1

当类里有变量名和成员变量名一样的时候,可以使用self区分

  • 例:

    我们写一个人的类,有一个年龄属性,在get方法里,我们定义一个与成员变量同名的变量,并初始化一个值为10,如果我们return _age;,则返回的是10,并不是我们的成员变量_age,但是如果我们使用self指针获取_age,那么返回的就必定我们的成员变量_age了。

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    {
        int _age;
    }
    
    - (void)setAge:(int)age;
    - (int)age;
    
    @end
    
    
    @implementation People
    
    
    - (void)setAge:(int)age
    {
        _age = age;
    }
    
    - (int)age
    {
        int _age = 10;
        return self->_age;
    }
    
    @end
    
    
    int main()
    {
        People *p = [People new];
        [p setAge:26];
        int age = [p age];
        NSLog(@"年龄为:%d",age);
        return 0;
    }

    P1

作用2

在成员方法里,如果需要调用其他的成员方法,可以使用self

  • 调用成员方法1,让成员方法1再调用成员方法2

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    - (void)fun1;
    - (void)fun2;
    @end
    
    
    @implementation People
    
    
    - (void)fun1
    {
        NSLog(@"执行了第一个方法");
        [self fun2];
    }
    
    - (void)fun2
    {
        NSLog(@"执行了第二个方法");
    }
    
    @end
    
    
    int main()
    {
        People *p = [People new];
        [p fun1];
        return 0;
    }

    P2

作用3

在类方法里,如果需要调用其他的类方法,可以使用self

  • 调用类方法1,让类方法1再调用类方法2

    
    #import <Foundation/Foundation.h>
    
    
    @interface People : NSObject
    + (void)fun1;
    + (void)fun2;
    @end
    
    
    @implementation People
    
    
    + (void)fun1
    {
        NSLog(@"执行了第一个类方法");
        [self fun2];
    }
    
    + (void)fun2
    {
        NSLog(@"执行了第二个类方法");
    }
    
    @end
    
    
    int main()
    {
        [People fun1];
        return 0;
    }

    P3

相关文章
|
4月前
|
Linux 开发者 Windows
blender-3.3.0-macos-x64安装教程 简单步骤 Mac版 附工具
下载Blender安装包并挂载镜像,将应用拖入“应用程序”文件夹。首次打开时若提示无法验证开发者,需在“系统设置-隐私与安全性”中点击“仍要打开”。启动后即可进入主界面,使用3D视图、属性面板和工具栏进行建模与编辑,轻松开始创作。
|
4月前
|
人工智能 自然语言处理 供应链
深度揭秘 RPA:从录屏脚本到智能员工,它的进化之路有多惊艳?
RPA机器人是能自动处理重复性工作的“数字员工”,通过模拟人工操作,实现数据录入、报表填报等任务的自动化。它非实体、不需编程,广泛应用于金融、制造、医疗等领域,提升效率、降低错误。未来,AI赋能的RPA将更智能、普惠,推动人机协同新变革。(239字)
1010 1
|
23天前
|
Linux API 数据安全/隐私保护
阿里云无影云电脑、本地部署OpenClaw图文攻略:WhatsApp集成+千问Qwen3.6-Plus配置与避坑指南
本文完整覆盖2026年**阿里云无影云电脑部署OpenClaw、本地MacOS/Linux/Windows11全平台搭建、千问Qwen3.6-Plus API高性能配置、WhatsApp全球IM集成**四大核心流程,搭配全场景高频问题排查方案,所有命令均为实测可直接复制,无需复杂操作即可完成部署。
265 14
|
21天前
|
存储 关系型数据库 分布式数据库
基于PolarDB Mem0 为 OpenClaw 构建高效记忆系统(阿里云开发者)
PolarDB Mem0 是阿里云推出的AI Agent长效记忆托管服务,100%兼容开源Mem0。它通过智能演进(自动去重、冲突消解)、跨端全局同步、多租隔离与企业级管控(存档、遗忘、差异化策略),彻底解决OpenClaw“数字囤积症”“换设备失忆”“毛坯房塌房”三大记忆难题,让Agent真正“越用越懂你”。
204 2
|
JavaScript 数据格式
js 计算两个时间的时间差
如题,就像题目说的需要计算出时间差,虽然不太难,但这个需求经常会在项目中遇到的,我在这边做一下整理,希望能够尽量全的整理出来。有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家。 本文首发于我的个人blog:obkoro1.com 计算时间差原理: getTime()方法 方法定义: getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。 通常我们计算时间差都是通过获取两个时间数据,然后分别使用getTime()方法返回与固定的1970 年 1 月 1 日的时间差,通过对返回毫秒数的差,换算成时间单位,得出两个时间的时间差。 开始操作:
1485 0
js 计算两个时间的时间差
|
2月前
|
前端开发 IDE JavaScript
HBuilderX 4.2 前端开发工具安装教程:详细步骤+自定义安装路径
HBuilderX(HX)是一款专为前端开发打造的轻量级IDE,以敏捷性能、清爽界面和强大功能著称。本文详解其4.2版离线安装全流程:下载解压→复制粘贴→运行配置→创建快捷方式,快速完成本地部署,即刻投入HTML/CSS/JS开发。
|
3月前
|
数据采集 自然语言处理 搜索推荐
电商行业有哪些agent应用:从 Quick Service 到 Dataphin 的智能革命
本文探讨Agent(智能体)如何驱动电商从“经验驱动”迈向“智能驱动”,聚焦Quick Service(全链路智能客服)、Quick BI“智能小Q”(对话式数据分析)、Data Agent(智能数据管家)与Dataphin(智能数据底座)四大技术实践,重塑运营、决策、履约与服务全链路。(239字)
电商行业有哪些agent应用:从 Quick Service 到 Dataphin 的智能革命
|
3月前
|
人工智能 机器人 API
新手一次成功:🦞OpenClaw🦞快速部署教程,2026最新图文流程
OpenClaw(原Clwadbot)是运行于本地的AI创作助手,现升级为Moltbot。本教程详解如何在阿里云轻量应用服务器(2核2G,仅38元/年)上一键部署,并集成钉钉等10+平台,3步完成配置,新手也能一次成功。
|
3月前
|
机器学习/深度学习 算法 安全
【PINN回归预测】基于遗传优化算法GA改进物理信息神经网络(PINN)的多变量回归预测模型附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长 毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真 。 🍎 往期回顾关注个人主页: Matlab科研工作室  👇 关注我领取海量matlab电子书和数学建模资料  🍊个人信条:格物致知, 完整Matlab代码获取及仿真咨询内容私信 。 🔥  内容介绍  一、研究背景与问题提出 在复杂工业系统(如化工反应过程、能源动力系统)、工程物理过程(如桥梁结构应力分析)及环境监测领域,多变量回归预测是核心任务。传统数据驱动模型(如BP神经网络、随机森林)依赖大规模标注数据,但存在两大缺陷:一是缺乏对系统内在物理
|
8月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
1399 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解

热门文章

最新文章