Object-c @property的使用方法

property是一种代码生成机制,能够生成不同类型的getter/setter函数,特别是如果你想要用点(.)操作符号来存取变量的话,你就能必须使用property。

如何使用?

用法如:@property (attribute1,attribute2) float value;

这些attribute包括:

readonly-只读,只能读取而不能设定值(不能用setXXXX的函式)。

readwrite-可读可写(默认)。

assign-在设值时替换新旧变量(默认)。

retain-在设值时retain新的变量,release旧变量。

copy-在设值时copy一份新变量,release旧变量。

nonatomic-默认為atomic。

strong - 在引用计数环境下,默认为strong,与retain作用相同;

从5.0系统后引入了weak,作用与assign相似,不过当所指向对象引用为0时,自动置为nil。

前两个只是简单的设定变量的可读写性。

assign只是简单的替换变量,通常运用在标量类型上,例如:NSInterger和CGRect,

或者(在引用计数环境)为那些你不拥有的对象,例如:delegates。

在垃圾收集环境下retain 和 assign实际上是相同的。

它的产生的setter代码內容类似:

- (void)setValue:(float)newValue {

value = newValue;

}

还有一点非常要注意的就是,在使用property时一定要在前面带上self(如:self.xxx),如果你不这样做,容易造成内存泄漏。

Object-c @property的使用方法

时间: 2024-08-14 11:48:06

Object-c @property的使用方法的相关文章

JS的Object类的属性、方法及如何创建对象

属性 constructor:对创建对象的函数的引用(指针).对于Object类,该指针指向原始的object()函数. prototype:对该对象的对象原型的引用.对于所有的类,它默认返回Object对象的一个实例. 方法 hasOwnProperty(property):判断对象是否有某个特定的属性.必须用字符串指定该属性(例如,o.hasOwnProperty(”name”)). isPrototypeOf(object):判断该对象是否为另一个对象的原型. propertyIsEnum

property 和 魔法方法

property和魔法方法 一.property 二.model,class,bases,mro 三.__doc__, __dict__,__call__,__item__,__len__,__str_ 回到顶部 一.property 1.普通的get和set方法 #!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author:Mr.yang ''' 设计一个银行账户类 包含两个属性: 开户人姓名, 余额 # 注意: # 一个类中全部属性都是私有的话,

python 之用装饰器@property,把方法变成一个特性

# -*- coding: utf-8 -*- """ Created on Sun Nov 13 23:19:03 2016 @author: toby """ #知识点:用装饰器@property,把方法变成一个特性 class Province:     memo = 'One of China\'s 23 provinces' #静态字段          def __init__(self,name,capital,leadership

[Angular 2] Using a Reducer to Change an Object's Property Inside an Array

Reducers are also often used for changing a single property inside of other reducers. This lesson shows how a type can enter the people reducer, but then the people reducer can use a different type to call the clock reducer and get a value back. So t

问题1、java.lang中String类和Object类中的equals方法比较

String类中的equals方法重写了Object类中的equals方法,下面通过代码来比较二者的不同之处: 一.String类 1. String s1 = "String"; String s2 = "String"; System.out.println(s1 == s2 ); System.out.println(s1.equals(s2));

Object 类中的 equals方法

1 相等与同一 如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等.如果两个引用对象指的是同一个对像,则称这两个变量同一.Object类中定义的equals 函数原型为:public boolean equals(Object);他是判断两个对象是否同一,并不是是否相等. 2 equals方法 由于Object 类是所有类的最高基类,所有其他类都继承类Object类的equals()方法,定义原型如下: public boolean equals (Object x){ return

原生js的Function,Array,Object构造函数的prototype原型方法扩展

在js中,Function构造函数的实例化对象为Function,Array,Object构造函数. <script> Function.prototype.addMethod = function (name,fn) { this.prototype[name]=fn; } Array.addMethod('test',function(){ console.log('Array method add'); }); Object.addMethod('test',function(){ co

day 封装,面向对象,@property @classmethod @staticmethod方法

一.封装 # 面向对象的三大特性 : 继承 多态 封装# 封装 : # 广义上的 # 狭义上的 :会对一种现象起一个专门属于它的名字 # 把一堆东西装在一个容器里 # 函数和属性装到了一个非全局的命名空间 -- 封装# class A:# __N = 'aaa' # 静态变量## print(A.__N) # python# pulic 公有的# private 私有的 # java完全面向对象的语言# public 公有的# protect 保护的# private 私有的 # 定义一个私有的

JAVA中Object类中的equals方法补充

Object类中的equals方法: 无论new多少个对象,当使用 "= =" 来判断的时候,是判断内存地址.判断回事false 若是需要进行对象之间的判断,则需要重写equals方法: public boolean equals(Object obj)//obj是传入的形式参数(对象) { if (obj == null)//判断对象是否为空 { return false;//空则返回false } else { if ( obj instanceof cat)//判断这个传入参数(