`
hxg_2009
  • 浏览: 4634 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于@property属性

    博客分类:
  • IOS
 
阅读更多
简介
编辑

Objective-C语言关键词,与@synthesize配对使用。xcode4.5以及以后的版本,@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;
}
以上等效的函数部分由编译器自动帮开发者填充完成,简化了编码输入工作量。

2.格式
编辑

声明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;
等效代码:
-(test*)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];
}
}
分享到:
评论

相关推荐

    IOS开发之@property的详细介绍

    在类中定义属性时,总会使用到@property进行定义,下面就来说说@property的使用。 在使用过程中,如果需求公开且在其他类中使用时,通常会定义在.h头文件中;而如果只是该类自已需要使用,这时则会定义 在.m实现...

    OC中的@property属性问题

    Retain,copy,assign...

    Python 类,property属性(简化属性的操作),@property,property()用法示例

    本文实例讲述了Python 类,property属性(简化属性的操作),@property,property()用法。分享给大家供大家参考,具体如下: property属性的创建方式有两种:1.@property装饰器方式 2.类属性方式 ( 类属性=property...

    Python @property及getter setter原理详解

    我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。 1.修饰方法,让方法可以像属性一样访问。 class DataSet...

    举例讲解Objective-C中@property属性的用法

    主要介绍了Objective-C中@property属性的用法,包括@property的属性关键字的整理,需要的朋友可以参考下

    python中@property和property函数常见使用方法示例

    主要介绍了python中@property和property函数常见使用方法,结合实例形式分析了Python @property和property函数功能、使用方法及相关操作注意事项,需要的朋友可以参考下

    python3.6中@property装饰器的使用方法示例

    本文实例讲述了python3.6中@property装饰器的使用方法。...2、通过一个例子来加深对@property装饰器的理解:利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution。 代码实现如下:

    关于NSString @property的问题

    nsstring 详细描述 大多数对于NSString类型的对象作为属性都用的是copy

    软件框架-实现@Data@Configuration@Autowired@PropertySource@Test等功能的源代码包

    1.本文代码实现的功能是配置类,指定自定义配置文件的位置和名称,开启对应配置类的属性注入功能,指定配置文件注入属性的前缀,生成getter和setter,toString方法等; 2.该程序代码是使用idea2021.12版本编写的,...

    ATProperty, 使用快捷方式创建 @property.zip

    ATProperty, 使用快捷方式创建 @property ATProperty 这是什么?这是一种方便快捷的创建... 在声明属性时不需要键入 @property 和 nonatomic 。你只需要像这样输入 @t 。 如何安装?安装的最好方法是使用 Alcatraz 。

    Python @property使用方法解析

    将类方法转换为类属性,可以用 . 直接获取属性值或者对属性进行赋值 2.实现方式 使用property类来实现,也可以使用property装饰器实现,二者本质是一样的。多数情况下用装饰器实现。 class Student(object): @...

    iOS-UI控件常见属性总结

    // 形变属性:旋转、缩放、平移 @property(nonatomic) CGAffineTransform transform; // 父控件 @property(nonatomic,readonly) UIView *superview; // 所有的子控件 @property(nonatomic,readonly,copy) NSArray *...

    iOS基础知识之@property 和 Ivar 的区别

    属性其实是对成员变量的一种封装。我们先大概这样理解: @property = Ivar + setter + getter Ivar Ivar可以理解为类中的一个变量,主要作用是用来保存数据的。 我们不妨来看个例子,通过下边的例子能够很清楚的...

    propertyGrid动态加载自定义属性

    关于propertyGrid加载自定义属性的小Demo,可以根据自己需要进行更改

    Python进阶之@property动态属性的实现

    Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下。 先看一个简单的例子。创建一个 Student 类,我希望通过实例来获取每个学生的一些情况,包括名字,...

    Eclipse中property属性插件

    Eclipse中property属性插件Eclipse中property属性插件

Global site tag (gtag.js) - Google Analytics