OC之属性

oc中的成员变量属性@synthesize和@dynamic理解 尽管已经写了一段时间的oc但对self.xxx和_xx的理解以及在三方代码中看到的@synthesize不是很理解,写代码还是不能太随便,不理解的东西写多了容易埋坑,所以还是花了点时间整理下这些到底是什么 什么是成员变量和属性 @interface Person : NSObject { NSString *name ; // 成员变量,实例变量 } // 属性 @property (nonatomic, strong) NSString *pName; @end 定义在h文件中的属性和成员变 阅读详情

一、@property @synthesize关键字

注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明和实现。

(一)@property 关键字

@property 关键字可以自动生成某个成员变量的setter和getter方法的声明

@property int age;

编译时遇到这一行,则自动扩展成下面两句:

- (void)setAge:(int)age;

- (int)age;

 

(二)@synthesize关键字

@synthesize关键字帮助生成成员变量的setter和getter方法的实现。

语法:@synthesize age=_age;

相当于下面的代码:

- (void)setAge:(int)age

{

_age=age;

}

- (int)age

{

Return _age;

}

 

(三)关键字的使用和使用注意

类的声明部分:

 

类的实现部分:

 

测试程序:

 

新版本中:

类的声明部分:

 

类的实现部分:

 

测试程序:

 

(1)在老式的代码中,@property只能写在@interface  @end中,@synthesize只能写在@implementation   @end中,自从xcode 4.4后,@property就独揽了@property和@synthesize的功能。

(2)@property int age;这句话完成了3个功能:1)生成_age成员变量的get和set方法的声明;2)生成_age成员变量set和get方法的实现;3)生成一个_age的成员变量。

注意:这种方式生成的成员变量是private的。

(3)可以通过在{}中加上int _age;显示的声明_age为protected的。

(4)原则:get和set方法同变量一样,如果你自己定义了,那么就使用你已经定义的,如果没有定义,那么就自动生成一个。

(5)手动实现:

1)如果手动实现了set方法,那么编译器就只生成get方法和成员变量;

2)如果手动实现了get方法,那么编译器就只生成set方法和成员变量;

3)如果set和get方法都是手动实现的,那么编译器将不会生成成员变量。

 

二、Id

id 是一种类型,万能指针,能够指向\操作任何的对象。

注意:在id的定义中,已经包好了*号。Id指针只能指向os的对象。

id 类型的定义

Typedef struct objc object{

Class isa;

} *id;

局限性:调用一个不存在的方法,编译器会马上报错。

谈谈人大金仓数据库 人大金仓数据库(Kingbase)是国产自主研发的关系型数据库管理系统,兼容主流数据库语法,支持高并发、高安全性及国产化适配。该数据库提供完整的安装部署方案,包括环境准备、初始化配置和验证流程,并配备专业的数据迁移工具(KDMS)实现从Oracle/MySQL等数据库的平滑迁移。系统提供KStudio等图形化管理工具,支持性能监控、备份恢复等运维功能,同时具备性能调优、高可用架构、分区表管理等高级特性,满足政府、金融等领域的企业级需求。 阅读详情

相关推荐

Uniapp+Vue3+Monorepo:如何优化你的前端开发流程(附完整配置代码)

本文详细介绍了如何利用Uniapp+Vue3+Monorepo技术栈优化前端开发流程,提升代码可维护性和团队协作效率。通过Monorepo架构实现依赖管理智能化、代码复用最大化和构建流程统一化,结合完整配置代码和实战指南,帮助开发者快速构建高性能跨端应用。

weixin_29011993的博客 453

黑马程序员——OC语言基础---@synthesize关键字介绍和使用

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- @synthesize是在m文件中定义set和get方法的实现。  1、@synthesize用法  @synthesize 方法名  1) @synthesize age; 表示生成.h中变量age的get和set方法的实现 注意; 如果是@synthesize的话, 变量名

lhp_heima的博客 483

基于CLICKHOUSE的数据仓库分层规范

接入层。

zjyy1987的博客 769

OC学习笔记之@synthesize

作用:     @property关键字用于set/get方法的声明,而@synthesize则用于set/get方法的实现。 用法:     @property int age;     @synthesize age;//表示实现.h文件中的set和get方法 @synthesize制定实例变量赋值     1.用法:        @proper

zhuhoulinly的博客 589

【智能体】零代码实战:Coze多智能体协作开发全流程解析

本文详细解析了Coze平台的多智能体协作开发全流程,从入门指南到实战技巧,帮助用户零代码构建高效AI团队。通过模块化设计和专业分工,多智能体系统能显著提升任务处理速度和准确率,适用于客服、内容创作、教育培训等多个场景。文章还提供了性能优化和常见问题解决方案,助力开发者快速掌握Multi-Agent技术。

weixin_29239279的博客 334

Blender地形建模实战:5步搞定Gazebo仿真地形(附避坑指南)

本文提供了一份详细的Blender地形建模实战指南,旨在帮助开发者快速创建Gazebo仿真地形。文章通过五个核心步骤,从环境准备、地形雕刻、模型优化导出,到创建Gazebo模型包及问题排错,系统讲解了如何将Blender中的地形模型成功导入Gazebo进行机器人仿真,并重点分享了关键的避坑经验。

weixin_28475533的博客 344

OC----synthesize 关键字

@synthesize 关键字 6.1 问题: setter, getter的实现也是没有什么任何技术含量 6.2 作用: 自动生成getter、setter方法的实现. 6.3 语法: @synthesize @property名称; 如: @interface Person : NSObject{ int _age; } @property int age; ...

Damys 1163

基于Codex与Skills的学术研究自动化全流程实战指南

还在为海量文献下载、整理、阅读和综述写作而头疼吗?面对堆积如山的PDF,你是否感到无从下手?从选题、文献检索、到写作、绘图、润色,再到应对AI检测和审稿意见,学术研究的每一步都充满挑战。本文将为你带来一套堪称“王炸组合”的解决方案: Codex + Skills 。这不是简单的工具介绍,而是一套从零开始,覆盖学术研究全流程的保姆级实战教程。我们将手把手教你如何安装、配置,并利用强大的Skills(技能)自动化处理文献下载管理、高效撰写综述、生成专业图表、智能润色降重,直至应对审稿。无论你是科研新手还是希望提

weixin_29041195的博客 761

OC语言基础之@property和@synthesize、@dynamic的配合使用

对于程序员而言,@property非常常见,但是@synthesize和@dynamic却很少出现,这两个关键字有什么用呢?需要怎么配合@property使用呢?本文就要讲述这个问题。

a296776627的博客 1096

【知识图谱】一文看懂知识图谱的搭建实践与科普教程(5万字完结篇)

所有可能的实体对:(“Mate40”,“华为”), (“Mate40”,“手机”), (“华为”,“手机”)。送入关系模型分类,预期输出 (“Mate40”,“华为”): 品牌, (“Mate40”,“手机”): 属于类别, (“华为”,“手机”): 无关系。,定义了图谱中概念和关系的类型层次结构,相当于知识图谱的“纲领”和“schema”。训练完成后,当模型看到新的句子,比如“苹果的MacBook笔记本性能强大”,识别出实体“苹果”(品牌)和“MacBook”(产品)后,就能正确输出关系“品牌”。

weixin_41645791的博客 2611

基于VSCode+clangd插件打造高效C++开发环境之四:clangd配置

本文介绍如何配置VSCode+clangd插件进行高效C++开发。重点内容包括:1)生成compile_commands.json文件,通过ninja工具提取编译命令并使用gen_compdb脚本转换;2)配置clangd命令行参数,如设置后台索引、并行度等;3)编写.clangd配置文件,调整编译标志和诊断选项;4)添加.clang-format文件定义代码风格;5)在VSCode中添加远程服务器工作目录。配置完成后需重启clangd服务使更改生效。文章还提供了MTK/QCOM等不同平台生成compile

5065

OC 属性的属性

OC 属性的属性

岽少的专栏 1542

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2247

OC 的Button常用属性设置

如下OC中Button的基本属性设置 效果图如下:

O_OCM的博客 2154

visio安装包

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

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

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

OC属性关键字和单例模式

如果一个类始终只能创建一个实例,则这个类被称为单例类。在程序中,单例类只在程序中初始化一次,所以单例类是储存在去全局区域,在编译时分配内存,只要程序还在运行就会一直占用内存,只有在程序结束的时候释放这部分内存。有三个注意点。

qq_73106050的博客 2474

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OC-探究private修饰的属性能否被继承

一下纯属个人观点,如有雷同,纯属巧合! 首先温习一下我们所熟知的OC中关于继承的一些常识 子类可以继承父类的:public/protect修饰的成员变量(“属性”或者叫“字段”)。private修饰的不可被被继承 ~~~~温习完毕之后,那么问题来了········· 在OC中子类到底能不能继承父类被private修饰的属性呢? 个人在写程序的时候经常会偷懒,比如: 父类Fun有一属性:

u012360598的专栏 1287

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

oc 查看属性默认关键词

oc 所有属性基础知识温故一下 https://www.jianshu.com/p/035977d1ba89

王铁涛技术博客 385

OC中对实例变量的相关处理方法——属性

OC中对实例变量的相关处理方法——属性 在OC中对于类的处理,我们使用了extensionprotocol category等处理方法,间接或者直接实现了对类(协议、延展和代理)和实例变量(继承)的功能扩展。 接下来尝试对实例变量的相关性能进行整理。 (一)实例变量的定义和设置 实例变量的定义及其初始化 实例变量是针对类而言的,实例变量的具体值由对象赋值。定义时候要注意变量类型、变量的可

V5V6_neil的专栏 1225

OC中的成员变量,实例变量,属性变量

OC中的成员变量,实例变量,属性变量

baidu_40537062的博客 429

「OC」源码学习——属性关键字

其实属性就是成员变量和自动编写的存取方法。

aa2002aa的博客 473

oc中属性以及属性的特性

1.掌握setter getter的作用以及书写格式

zxmlalala123的专栏 697

oc(二)属性关键字和修饰符,oc中的值类型和引用类型

q

qq_55655826的博客 298

【Objective-C】浅析OC中的属性关键字

复习了常见的属性关键字 主要是内存管理部分 简单了解类属性class

XY_Mckevince的博客 773

「OC」源码学习——关联属性再探索

在寒假学习小蓝书的时候就已经接触过了关联属性,现在在学习源码的过程之中,在进行复习巩固以及深入学习iOS-底层原理 19:类扩展 与 关联对象 底层原理探索iOS 关联属性底层探索。

aa2002aa的博客 882

OC中类的属性与成员变量的区别

转载于:https://www.cnblogs.com/CH520/p/9285138.html

weixin_34409822的博客 90
上一篇: OC之语法
下一篇: OC之构造方法
Shicuf
博客等级 码龄16年 11粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值