iOS学习 - Objective-c之property

iOS --- Objective-C中类的成员变量与属性 在Objective-C的类与对象的概念中. 成员变量与属性的区别与联系一直没有搞清楚. 直到学习了慕课网上的这个课程Objective-C面向对象初体验, 才算真正有了点感觉了. 最关键的结论就是: 类内使用成员变量{}, 类外使用属性@property. 阅读详情

Objective-c中通过属性(property)可以为类声明实例变量并实现相应的存储方法,而且比用户自己实现更简洁。

一.属性用法

用关键字property声明属性,语法形式为:@property (特性列表)类型 对象名;其中特性列表为可选项,如果无特性列表,例如,@property NSString itemName; 则默认特性为string, readwrite, nonatomic。编译器自动生成了实例变量NSString *_itemName 和存取方法- (void)setItemName:(NSString )name、- (NSString *)itemName。

表1 使用和不使用属性的两个等价类

不使用属性使用属性
CNTThing.h @interface CNTThing : NSObject
{
    NSSTring * _name;
}
- (void)setName:(NSString *)n;
- (NSString *)name;
@end
@interface CNTThing : NSObject
{
    @property NSSTring * name;
}
@end
CNTThing.m @implementation CNTThing

- (void)setName:(NSString *)n
{
    _name = n;
}
- (NSString *)name
{
    return _name;
}
@end
@implementation CNTThing
@end


二.使用属性应注意的问题
1.属性的特性

@property (特性1,特性2,…)对象类型 对象名字;
其中特性有nonatomic, atomic, readwrite, readonly, strong, weak, copy等,nonatomic非原子操作,常用于界面元素,不用考虑线程安全,速度快。

2.自定义存取方法

如果属性自动生成的存取方法无法满足要求可以自定义存取方法,自定义存取方法应注意一个问题,当全部的方法都自定义时,用户需显式定义属性和变量。上例中如果用户自定义了name和setName方法,则需要在CNTThing.m中添加”@synthesize name = _name;”告诉编译器创建属性和实例变量_name。用户自定义了全部的方法也意味着假设name被声明为只读(readonly)属性,用户自定义了取方法,则需用“@synthesize”告诉编译器生成对象和方法。

Objective-C与C语言关系解析:从语法到苹果开发生态 C语言作为编译型语言的代表,其语法结构和指针操作奠定了现代编程语言的基础。通过引入Smalltalk的消息传递机制,Objective-C在C语言之上构建了动态的面向对象模型,实现了运行时多态和动态绑定。这种设计使得Objective-C能够与C++代码混合编译,形成Objective-C++模式,为高性能计算和复用现有C++库提供了技术路径。在苹果开发生态中,这一技术价值体现在Cocoa框架的构建和Xcode工具链的深度整合上,使得开发者能够高效构建macOS和iOS应用。本文围绕C系语言谱系、Objec 阅读详情

相关推荐

Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发者需要了解什么?)

基于Qt for iOS的准备工作

Esonpo的专栏 2646

iOS学习笔 - Objective-C property和instance variable

iOS学习笔 - Objective-C property和instance variable 一、property语法 声明property的语法为: @property (参数)类型名字; 这里的参数主要分为三类: 1、读写属性(readwrite/readonly,他们是互斥的) readwrite 此标记说明属性会被当成读写的,这也是默认属性。设置

u012894362的专栏 617

Objective-C学习之objc_property_t(获取类和协议的属性)

objc_property_t 属性类型,指向objc_property结构体typedef struct objc_property *objc_property_t; 通过class_copyPropertyList和protocol_copyPropertyList方法获取类和协议的属性objc_property_t *class_copyPropertyList(Class cls, u

甫式人生 2006

iOS学习笔记04—Objective-C property和instance variable

iOS学习笔记04—Objective-C property和instance variable 一、property语法 声明property的语法为: @property (参数)类型名字; 这里的参数主要分为三类: 1、读写属性(readwrite/readonly,他们是互斥的) readwrite 此标记说明属性会被当成读写的,这也是默认属性。设

jjunjoe的专栏 5376

完全掌握iOS应用开发:从入门到实战

Objective-C和Swift都有各自的优点,也都有支持的生态系统。对于新的开发项目,Swift是推荐的语言。但是,对于维护旧项目,或者团队对于Objective-C有更深厚的了解,那么继续使用Objective-C也是可以接受的。在实际开发过程中,对这两种语言的比较和选择,是根据项目需求、团队技能和未来规划来决定的。在UIKit框架中,常用的界面控件包括:UIButton:按钮控件,用于接收用户的点击事件。和UITextView:文本输入控件,分别用于单行和多行文本输入。

weixin_26805451的博客 1389

Tessent ICL语法详解:如何高效定义SIB、TDR和TAP模块

本文深入解析Tessent ICL语法,指导如何高效定义SIB、TDR和TAP模块以构建芯片测试网络。通过实战代码示例,详细阐述了各模块的端口声明、接口角色与核心寄存器定义,并提供了顶层集成连接方法与调试技巧,帮助DFT工程师精准描述测试仪器拓扑,提升Tessent工具链使用效率。

silver的专栏 492

《Objective-C学习总结》

学习要点 runtime(√√√√√√√√√√√√√√√√√√) runloop(√√√√√√√√√√√√√√√√√√) category(√√√√√√√√√√√√√√√√√√) protocol(√√√√√√√√√√√√√√√√√√√) extension(√√√√√√√√√√√√√√√√√√√) property(√√√√√√√√√√√√√√√√√√√√) 深复制与浅复制(√√√√√√√√√

luozhiwei_iOS的博客 6252

AI 推理与服务(AI Inference and Serving)

AI 推理和服务是现代分布式系统中的重要组成部分。通过合理应用 AI 推理和服务的最佳实践,可以显著提高系统的智能性和用户体验。本章介绍了 AI 推理和服务的核心概念、最佳实践以及在分布式系统中的应用,希望这些内容能帮助您构建更智能、更高效的分布式系统。

蜗牛沐雨 1381

ios开发学习--objective-c学习--系列教程3

objective-c 单例模式详解 http://ios.itmdc.com/thread-2960-1-31.html Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构) http://ios.itmdc.com/thread-2708-1-33.html Objective_C的语言特性,以及委托模式delegate  http:

wqybsxf12的专栏 828

RPA机器人技术原理初探

RPA初步

曲折旅程,艰难人生 2137

用Keil5给CH552G编程:手把手配置8051开发环境+LED闪烁实战

本文详细介绍了如何使用Keil5为CH552G单片机配置8051开发环境,并完成LED闪烁实战。从获取必要软件、安装WCH器件库到创建工程、编写程序及烧录,手把手指导开发者避开常见陷阱,特别适合从STC转向CH552G的开发者。

weixin_30733003的博客 537

关于objective-c中的property和实例变量

首先,在objective-c中,并没有真正的property,使用self.property只是调用函数的一种精简写法,就是调用property的getter和setter方法罢了。 如果定义了一个retain的属性 @property (nonatomic, retain) NSMutableDictionary *imageScaleDict; 然后在代码中对该属性进行下面的操作进行初

Kay's space 3203

7 series FPGAs Transceiver Wizard IP核使用和测试

学习FPGA一段时间了,前面一直没有系统的总结,这学期把在项目中用到的IP核和一些调试过程中遇到的问题总结一下发出来,坚持下去,一起进步! 今天总结一下的GTH核的使用和测试。 软件版本:Vivado 2017.4 IP核版本:7 Series FPGAs Transceivers Wizard (3.6) FPGA:xc7vx690tfft1927 实现功能: 四路光纤数据接收,由于GTX IP...

qq_39921762的博客 1万+

Objective-C 学习笔记 | 协议(property)

Objective-C 学习笔记 | 协议(property)

ProgramNovice的博客 826

MPU6050模块DIY翻车实录:ID能读但数据全为零?原来是这个10uF电容惹的祸

本文详细记录了MPU6050模块调试过程中遇到的ID能读但数据全为零的问题排查过程。通过对比不同参考设计,发现CPOUT引脚10uF电容选择不当是导致数据异常的根源,更换为官方推荐的2.2nF电容后问题解决。文章为硬件开发者提供了宝贵的电路设计经验。

weixin_29158047的博客 319

13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE

13个GNS3 appliances设备模板:IOSv/L2,IOU L2/L3,以及IOS-XE合集

haierccc的博客 1070

在Objective-c里面使用property教程

在Objective-c里面使用property教程 免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作! 原文链接地址:http://www.raywenderlich.com/2712/using-properties-in-obje

xinshou_jiaoming的专栏 1108

【硬刚Hadoop】HADOOP MAPREDUCE(1):概述

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Hadoop部分补充。 1 MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 2MapReduce优缺点 2.1 优点 1)MapReduce易于编程 它简单的实现一些接口,就可以完成一个分布式程序..

微信搜:import_bigdata,大数据领域硬核原创作者 462

objective-c 笔记

花了近一周的时间看了objective-c的主要语法, 都说其语法貌似天书,加上中文教程少,所以学习起来的确有困难。网上有斯坦福2011秋的公开课, 不过新手会看得一头雾水,强烈推荐lynda.com的《iOS SDK Essential Training》和《objective-c Essential Training》。 我看斯坦福的教程摸索了五六天,可回头看这个教程一天就豁然...

a664552的博客 269

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IOS编程学习:property、nonatomic, retain,weak,strong用法

property:提供成员变量的访问方法的声明、控制成员变量的访问权限、控制多线程时成员变量的访问环境 。property不但可以在interface,在协议protocol.和类别category中也可以使用。 synthesize 合成访问器方法? 实现property所声明的方法的定义。其实说直白就像是:property声明了一些成员变量的访问方法 ,synthesi

scwtw的博客 413

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Objective-C Runtime 一小时入门教程(上)

http://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=401923683&idx=1&sn=170322bd1ed750b0bc12260c5b7d40fe&scene=23&srcid=0307gZNVzPKRSuS1VYE1UQv0#rd 一、前言 如果你没有Objective-C基础,请学习了基础的i

花开半夏ァ殇了流年 811

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Objective-C 学习笔记 11 - 属性Property

上一节的Appliance.h中声明了2个成员变量productName和voltage。如果不使用属性机制@property,就需要用以下代码声明存取方法: - (void)setProductName:(NSString *)s; - (NSString *)productName; - (void)setVoltage:(int)x; - (int)voltage;使用属性机制后,代码如下

yaming的专栏 533

Objective-C(十五、内存管理,MRC,循环引用,dealloc和setter方法)——iOS开发基础

内存管理的基础知识,内存泄露,将是对象,野指针,空指针的理解; 引用计数的理解; 基于引用计数的内存管理方法的理解; 循环引用说明以及解决方法; dealloc和setter的更安全写法;

弄潮者的博客 2404

iOS:内存管理(三):在Objective-c里面使用property教程

(译)在Objective-c里面使用property教程 免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作! 原文链接地址:http://www.raywenderlich.com/2712/us...

weixin_33860147的博客 130

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 156
上一篇: 腾讯后台服务开发一面归来
codingnote
博客等级 码龄12年 3粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值