当前位置: 首页 > 编程笔记 >

IOS开发之@property的详细介绍

邹山
2023-03-14
本文向大家介绍IOS开发之@property的详细介绍,包括了IOS开发之@property的详细介绍的使用技巧和注意事项,需要的朋友参考一下

IOS开发之@property的详细介绍

在类中定义属性时,总会使用到@property进行定义,下面就来说说@property的使用。

在使用过程中,如果需求公开且在其他类中使用时,通常会定义在.h头文件中;而如果只是该类自已需要使用,这时则会定义

在.m实现文件中。

使用格式

@property (参数1, 参数2, 参数3, ...) 参数类型 参数名称

参数包括三个种类,七个属性,如下图所示。 

在使用过程中,有几点需要注意:

(1)原子性定义中,如果没有涉及到多线程环境时,通常不会使用默认值atomic;
(2)读写属性通过采用默认值readwrite;
(3)set方法处理时,需要针对不同的类型使用参数,而不是全都使用默认值;
(4)set方法处理时,对于非对象参数类型,即基本数据类型,如int/float/double/BOOL等类型时,采用assign;
(5)set方法处理时,对于对象参数类型,如NSString/NSNumber/NSArray/…/NSDictionary等类型时,采用retain/copy;
(6)在使用过程中,定义某个属性后,系统会自动生成setter/getter方法,但程序员可以根据需要修改setter/getter方法;
(7)同时会生成同名带下划线的成员变量,并在setter/getter方法中使用。

如,定义一个Person类的姓名、年龄:

使用默认值进行定义

@property age;

相当于

@property (atomic, assign) int age;

通过采用非原子性的,即

@property (nonatomic, assign) int age;

对象类型的定义不能使用如下方式,因为该形式定义时,是直接进行赋值,会造成内存泄露。

@property (nonatomic, assign) NSString *name;

正确的方式应该使用retain/copy进行定义

@property (nonatomic, retain) NSString *name;

默认生成的setter/getter方法分别是

- (void)setAge:(int)age;
- (int)age;
- (void)setName:(NSString *)name;
- (NSString *)name;

如果在定义时,重新定义了setter/getter方法,则系统默认分成的setter/getter方法则无效了,使用时,需要调用新定义的

@property (nonatomic, retain, setter = setMyName:, getter = getMyName) NSString *name;

此时,使用时setter/getter方法

- (void)setMyName:(NSString *)myName;
- (NSString *)getMyName;

早期的Xcode版本中,@property 还会结合 @systhesize 来使用才会生成setter/getter方法,如

@property (nonatomic, assing) int age;
@systhesize age;
// 或
@systhesize age = _age;

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

 类似资料:
  • 本文向大家介绍IOS 开发之触摸事件详细介绍,包括了IOS 开发之触摸事件详细介绍的使用技巧和注意事项,需要的朋友参考一下 IOS 触摸事件  iOS中的事件可以分为3大类型: 触摸事件 加速计事件 远程控制事件 响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为“响应者对象”。 UIApplication、UIViewContro

  • 本文向大家介绍IOS 开发APP之关于时间处理详细介绍,包括了IOS 开发APP之关于时间处理详细介绍的使用技巧和注意事项,需要的朋友参考一下 IOS 时间处理 做App避免不了要和时间打交道,关于时间的处理,里面有不少门道,远不是一行API调用,获取当前系统时间这么简单。我们需要了解与时间相关的各种API之间的差别,再因场景而异去设计相应的机制。 时间的形式 在开始深入讨论之前,我们需要确信一个

  • 本文向大家介绍IOS property属性详细介绍使用注意事项,包括了IOS property属性详细介绍使用注意事项的使用技巧和注意事项,需要的朋友参考一下 IOS property属性 原子性 atomic nonatomic 访问权限 readWrite readOnly 内存管理 strong retain copy assign weak unsafe_unretained 方法命名 g

  • 本文向大家介绍Android NDK开发详细介绍,包括了Android NDK开发详细介绍的使用技巧和注意事项,需要的朋友参考一下 Android之NDK开发  一、NDK产生的背景   Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能

  • 本文向大家介绍java并发之ArrayBlockingQueue详细介绍,包括了java并发之ArrayBlockingQueue详细介绍的使用技巧和注意事项,需要的朋友参考一下 java并发之ArrayBlockingQueue详细介绍  ArrayBlockingQueue是常用的线程集合,在线程池中也常常被当做任务队列来使用。使用频率特别高。他是维护的是一个循环队列(基于数组实现),循环结构

  • 本文向大家介绍详细介绍SpringCloud之Ribbon,包括了详细介绍SpringCloud之Ribbon的使用技巧和注意事项,需要的朋友参考一下 一:Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Lo

  • 本文向大家介绍详细介绍C#之文件校验工具的开发及问题,包括了详细介绍C#之文件校验工具的开发及问题的使用技巧和注意事项,需要的朋友参考一下 .加密算法的熟悉     目前校验文件使用最多的是MD值和SHA值,不外乎有些使用CRC,前段时间微软发布了VisualStudio正式版,win镜像,微软官方给出的校验方式都是校验文件的SHA值。        C#进行MD加密与SHA加密的实现总结在这里

  • 本文向大家介绍实例详解IOS开发之UIWebView,包括了实例详解IOS开发之UIWebView的使用技巧和注意事项,需要的朋友参考一下 iOS开发之UIWebView 是本文要介绍的内容,UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图: 我们创建一个Window-based A