OC中对于属性的总结(@property)

news/2024/7/20 13:17:21 标签: xcode, 内存管理

在没有属性之前:
对成员变量进行改动都要用到设置器:setter来改动

    Person *per =[[Person alloc] init];
     对象通过设置器对成员变量内容进行修该
    [per  setName:@"你好"];

要通过訪问器:getter来进行取值
属性的出现 ,简化了代码

1.属性

属性是写在.h中
在XCode4.5之后,属性一共能够做了三件事:
1.声明了设置器:setter和訪问器:getter
2.实现了设置器和訪问器
3.声明了一个成员变量,成员变量命名会在属性名前面加一个下划线

(总结)
详细的数据存储还是有成员变量来完毕,属性值只是帮助程序猿完毕一些繁琐的工作,简化代码

属性用 @property 来表示

样例:比方定义一个学生类的年龄对象
首先创建一个学生类,之后直接用属性来创建年龄对象
在学生类的.h文件里:
@property NSInteger age;
这样一个年龄对象就建好了
一个属性完毕了在对象.h中的声明,完毕了setter,getter在.h中的声明,完毕了setter,getter在.m中的实现三件事

2.属性的属性

(1) 读写的控制: readonly和readwrite

  1. readonly:仅仅读:
    设置之后,属性就没有setter,在设置了仅仅读之后,就不能够对成员变量进行改动了
  2. readwrite:读写:
    能够进行訪问与读取

3.原子性的控制

在整个过程中系统通过原子性 atomic来监控实物在整个过程中偶遇没有完毕,可是对于我们来讲,我们仅仅是对数据进行简单的赋值,一般我们都会用nanatomic,不进行监控
// 通过原子性atomic来监控实物在整个过程中有没有完毕,可是一般来讲我们就是对数据的简单赋值,一般我们这部分用nonatomic

(atomic)
@property (atomic)NSString *sex;
(nonatomic)
@property(nonatomic)NSString *color;

4.语义设置

copy , assign , retain

1.retain一般用在对象类型, 比方我们自己写的类,还有数组NSArray中会用到

2.assgin 一般用在NSInteger和CGFloat中,由于他们在栈区,不须要内存管理,所以用assgin

3.copy 一般仅仅会用在字符串中

样例:
@property(nonatomic ,copy)NSString *color;
@property(nonatomic ,assign)NSInteger age;
@property(nonatomic ,assign)CGFloat score;
@property(nonatomic ,retain)NSArray *arr;

注意:

在XCode4.5版本号之前另一个关键词的定义
在.m文件里须要有一个关键词@sythesize才干实现setter和getter

格式 :关键词  属性名=成员变量名 
@synthesize name = _name;

转载于:https://www.cnblogs.com/liguangsunls/p/7039903.html


http://www.niftyadmin.cn/n/1855193.html

相关文章

c# mvc如何搭建简单的导航框架_如何做自动化测试?先从简单的框架搭建开始(Robotframework篇)...

随着国内自动化测试的慢慢流行,自动化测试工具也就在日常工作中扮演着举足轻重的作用,测试金字塔将自动化测试分为Unit、Service层以及UI层。每个层面基本上都有对应的自动化工具支撑,绝大多数的测试人员接触的最多的就是金字塔尖的口界面测试…

【RF库Collections库测试】关键字append to list

Arguments:[ list_ | *values ]Adds values to the end of list. 转载于:https://www.cnblogs.com/apple2016/p/7041714.html

怎么设置jpanel的透明度_ps橡皮擦怎么用

ps橡皮擦怎么用?在PS中,橡皮擦工具的快捷键是E键,按下E键,调出橡皮擦工具,这时,上面显示出橡皮擦工具的属性栏。在这里,我们进行一些设置,比如,橡皮擦工具工具的笔触的大小。选择模…

ubuntu vscode安装_ccls 和 vscode 一种在vscode以外的c++方案

什么是ccls使用vscode写c在知乎上已经是一个谈烂了的话题了,基本上可以简化为安装c插件,写launch.json,然后debug。但是今天要介绍一个不一样的姿势,通过ccls,体验lsp的美妙,先上效果,这里以浏览…

动态规划 LCS,LIS

1、最大连续子序列 dp[i]max(dp[i-1]a[i],a[i]) 以i为结尾2、最大不连续子序列 dp[i]max(dp[j]a[i],dp[j])3、最大连续递增子序列 if a[i]>a[j] dp[i]max(dp[i-1]a[i],a[i])4、最大不连续递增子序列 if a[i]>a[j] dp[i]max(dp[j]a[i],dp[j])5、最长不连续公共子序列 …

python 获取li的内容_【师兄带你学Python-5】摆盘齐整的羊肉卷(列表)lt;赠PDF批量转Word代码gt;...

友情提示-------资料包下载-------资料包内容:1)[秒变大神]“批量转换PDF至Word文档“代码(使用方法见文末)下载地址:http://gofile.me/4uTt7/QZwLv3JsG下载密码:转发本文集赞>6个,凭截图在公…

2014 Unity3d大会的部分总结

一、项目开发。管理和公布策略 1. 四大准则 a. 美术的资源量 b. 美术规范,要依据开发什么样的游戏制定统一的规范,这样尽可能的形成统一的规范。然后程序要协助美术制定对应的查看美术是否适合规范的的工具。并把全部美术资源统计出来…

html中字母大写格式,CSS text-transform 属性——转换文本的大小写格式

可能的值值描述none默认。定义带有小写字母和大写字母的标准的文本。capitalize文本中的每个单词以大写字母开头。uppercase定义仅有大写字母。lowercase定义无大写字母,仅有小写字母。inherit规定应该从父元素继承 text-transform 属性的值。h1 {text-transform: u…