@property属性修饰符

1.@property属性修饰符

//@property属性修饰符:@property ()

//多个修饰符之间用逗号隔开

//1.readwrite:缺省修饰符。可读可写,既有setter方法,也有getter方法

//2.readonly:只读。只有getter方法,没有setter方法

//3.atomic:缺省修饰符。原子的,考虑线程安全

//4.nonatomic:非原子操作。iOS开发中,官方类的属性一般是nonatomic类型的,所以我们一般也写成nonatomic.

//5.assign:基础数据类型(int/float/char/double/long)的缺省修饰符。直接赋值。

//6.对象:1> 字符串:copy

//       2> 其他对象:retain

//7.修改setter或者getter方法的名字(给settergetter方法起别名)

//settergetter方法名可以不一致

 

//姓名,年龄

@property(nonatomic,copyNSString *name;   //姓名

@property(nonatomic,assign,setter = setMouseAge:,getter = mouse) int age;          //年龄

 

 

 

2.访问控制

//访问控制:默认的是受保护类型 @protected

//访问控制针对的是成员变量。成员方法没有访问控制。

//1.@protected:默认,受保护类型。在类内减方法中可以直接使用,在类外不能直接使用,但是可以通过方法间接使用。子类可以直接使用。

//2.@private:私有的。在类内可以直接使用,在类外不能直接使用,但是可以通过方法间接使用。子类不可以直接使用,但可以通过父类的方法间接使用。

//3.@public:公有的。类内和类外都可以直接使用。

 

 

 

3.为什么需要在.m中加上 @synthesize age = _age;

@implementation Work

//xcode 4.3 开始 可以 省去  @synthesize xcode 会自动加上

 

//@synthesize height = _height;

 

//协议中出现了 @property  那么遵守协议的类 必须要手动添加上@synthesize age = _age; 这时xcode 不会自动加上的

 

//必须加上

@synthesize age = _age;

 

 

- (void)func { 

}

@end

 

4.前向声明

//前向声明:告诉Teacher这个类,接下来要使用的Children是一个类。

//在一个类的.h中,如果要使用另外一个类,那么使用前向声明的方式,为了避免彼此包含。

//前向声明后,如果要在当前类的.m中使用另外一个类(Children),仍然要导入头文件

//前向声明时,注意类名不要拼错(拼错就相当于声明一个新类)

@class Children;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`@property`是一个Python装饰器,用于将一个方法转换为属性访问。当使用`@property`注解修饰一个方法时,这个方法可以像访问属性一样被访问,而不需要显式地调用该方法。 通过将方法转换为属性,可以提供一种更简洁、直观的方式来访问和操作对象的属性,同时隐藏了底层实现的细节。 以下是`@property`注解的使用示例: ```python class Circle: def __init__(self, radius): self._radius = radius @property def radius(self): return self._radius @radius.setter def radius(self, value): if value > 0: self._radius = value else: raise ValueError("Radius must be positive") @property def area(self): return 3.14 * self._radius**2 ``` 在上面的示例中,我们定义了一个`Circle`类,其中有一个私有属性`_radius`表示半径。通过使用`@property`注解修饰`radius`方法,我们可以将其转换为一个可访问的属性。这样,我们可以直接访问`circle.radius`来获取半径值,而不需要调用`circle.radius()`方法。 我们还定义了一个`radius.setter`方法,用于设置半径值。通过使用`@property`注解修饰这个方法,我们可以将其转换为一个可用于设置属性值的语法。现在,我们可以通过赋值操作符`=`来设置半径,例如`circle.radius = 5`。 最后,我们使用`@property`注解定义了一个只读属性`area`,它根据半径计算圆的面积。这样,我们可以通过`circle.area`直接获取圆的面积,而不需要调用`circle.area()`方法。 总之,`@property`注解提供了一种简洁、直观的方式来访问和操作对象的属性,使代码更加易读和易用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值