`
fireflylover
  • 浏览: 110918 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

@property详解

 
阅读更多

Objective-C语言关键词,与@synthesize配对使用。  功能:让编译好器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。  如:  1、在头文件中:  @property int count;  等效于在头文件中声明2个方法:  - (int)count;  -(void)setCount:(int)newCount;  2、实现文件(.m)中  @synthesize count;  等效于在实现文件(.m)中实现2个方法。  - (int)count  {  return count;  }  -(void)setCount:(int)newCount  {  count = newCount;  }

  以上等效的函数部分由编译器自动帮开发者填充完成,简化了编码输入工作量。

 

 

格式

声明property的语法为:  @property (参数1,参数2) 类型 名字;  如:  @property(nonatomic,retain) UIWindow *window;  其中参数主要分为三类:  读写属性: (readwrite/readonly)  setter语意:(assign/retain/copy)  原子性: (atomicity/nonatomic)  各参数意义如下:  readwrite  产生setter\getter方法  readonly  只产生简单的getter,没有setter。  assign  默认类型,setter方法直接赋值,而不进行retain操作  retain  setter方法对参数进行release旧值,再retain新值。  copy  setter方法进行Copy操作,与retain一样  nonatomic

  禁止多线程,变量保护,提高性能

 

参数类型详解

参数中比较复杂的是retain和copy,具体分析如下:

getter分析

1、 @property(nonatomic,retain)test* thetest;  @property(nonatomic ,copy)test* thetest;  等效代码:  -(void)thetest  {  return thetest;  }  2、@property(retain)test* thetest;  @property(copy)test* thetest;  等效代码:  -(void)thetest  {   [thetest retain];  return [thetest autorelease];  }

setter分析

1、  @property(nonatomic,retain)test* thetest;  @property(retain)test* thetest;  等效于:  -(void)setThetest:(test *)newThetest {  if (thetest!= newThetest) {   [thetestrelease];  thetest= [newThetest retain];  }  }   2@property(nonatomic,copy)test* thetest;  @property(copy)test* thetest;  等效于:  -(void)setThetest:(test *)newThetest {  if (thetest!= newThetest) {  [thetestrelease];  thetest= [newThetest copy];  }

  }

 

分享到:
评论

相关推荐

    Objective-C中的@property和@synthesize用法详解

    相信每个初学者对@property和@synthesize都感到非常的陌生,在此给大家分享下我的自己的理解,有不当之处,还望多多指教。详细说明文章在下面连接http://blog.csdn.net/comeontom/article/details/7455459

    Python @property及getter setter原理详解

    @property作用: python的@property是python的一种装饰器,是用来修饰方法的。 我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样...

    Python 中@property的用法详解

    在Python编程语言中,`@property`装饰器是一种强大的工具,用于封装对象的属性,以实现数据验证、计算属性或隐藏内部实现细节等目的。它允许我们创建getter和setter方法,使得对对象属性的访问看起来像直接操作成员...

    iOS开发中属性 property 和 synthesize 详解

    ### iOS开发中属性property和synthesize详解 #### 一、引言 在iOS开发过程中,`@property` 和 `@synthesize` 是两个非常重要的概念。它们不仅简化了代码编写过程,提高了开发效率,还增强了程序的可维护性。本文将...

    IOS开发之@property的详细介绍

    在iOS开发中,`@property` 是Objective-C中的一个关键字,用于声明类的实例变量(ivar)并自动合成存取方法(setter和getter)。通过使用`@property`,开发者可以方便地控制实例变量的访问权限、内存管理策略以及...

    Python @property装饰器原理解析

    ### Python中的@property装饰器详解 在Python编程语言中,`@property`装饰器是一个非常实用且强大的特性,它能够帮助开发者更加优雅地处理类的属性访问。本篇文章将深入探讨`@property`装饰器的工作原理及其如何...

    Spring boot中PropertySource注解的使用方法详解

    在Spring Boot应用中,`@PropertySource`注解是一个关键组件,它允许开发者从外部配置文件中加载属性值。这个注解主要用于将属性文件中的键值对注入到Spring的Environment中,使得这些属性可以在应用程序的任何地方...

    python3中property使用方法详解

    ### Python3中property使用方法详解 #### 一、概述 `property`是Python中的一个内置函数,用于在类中创建动态属性。它允许我们在类中定义一些方法,并以一种更直观的方式(即像访问普通属性一样)来调用这些方法。...

    UITableView、UITableView基本用法、UITableView详解

    iOS 开发中 UITableView 的使用详解 UITableView 是 iOS 开发中最常用的控件之一,用于显示列表数据。它类似于 Android 中的 ListView,都是用于显示列表数据的控件。在 iOS 开发中,UITableView 是一个非常重要的...

    ios_assign,retain和copy详解

    在iOS开发中,Objective-C语言提供了@property关键字来声明属性,并且可以在属性声明时指定不同的内存管理行为,主要涉及到assign、retain和copy这三个关键字。为了深入理解这三者的区别,首先需要了解Objective-C的...

    python中property属性的介绍及其应用详解

    在Python编程中,property属性是一种用于实现属性访问控制的内置功能。通过使用property,可以定义私有变量,并提供公开的获取(get)和设置(set)接口,以增强代码的封装性和可读性。property属性能够让我们定义出类似...

    09.面向对象进阶.md

    ### 面向对象进阶知识点详解 #### 1. @property 装饰器的使用及作用 在面向对象编程中,一个重要的概念就是封装。`@property`装饰器在 Python 中是一种非常实用的方式,它能够让我们更方便地管理类的属性。通过...

    详解iOS App中UITableView的创建与内容刷新

    UITableView几乎是iOS开发中用处最广的一个控件,当然也是要记相当多东西的一个控件。 创建 首先创建一个新的项目,并添加一个MainViewController的Class文件 ...@property (nonatomic, retain) UITabl

    property用法.txt

    ### property用法详解 在Java Web开发中,特别是使用Struts2框架时,`property`标签是处理数据展示的关键工具之一。它主要用于显示Action中的属性值。本文将深入解析`property`标签的各种用法,帮助开发者更好地...

Global site tag (gtag.js) - Google Analytics