三、属性和点语法

1.属性

①注意,写属性一定不要加下划线

②属性的特性-读写性:

《1》readonly:只生成getter方法,不生成setter方法

《2》readwrite:(系统默认)可读可写,生成getter,setter方法

《3》setter= :给setter方法换一个新名字

《4》getter=:给getter方法换一个新名字

③属性的特性-原子性:

《1》atomic:原子特性。原子操作(setter、getter内部做了多线程访问处理),一般不用(系统默认)

《2》nonatomic:非原子特性。非原子操作,声明属性时,通常使用nonatomic

④属性的特性-语义特性:

MRC(手动引用计数)手动管理内存下使用

《1》assign:修饰基本数据类型(可以修饰对象类型)

使用:NSInteger、int、double、CGFloat...

《2》retain:修饰类对象(不能修饰基本数据类型)

使用:除字符串NSString以外的全部类对象类型

《3》copy:修饰类对象(不能修饰基本数据类型)

ARC(自动引用计数)

《1》assgin:修饰基本数据类型(类对象类型)

《2》weak:修饰类对象(不能修饰基本数据类型)

《3》strong:修饰类对象(不能修饰基本数据类型)

《4》copy:修饰类对象(不能修饰基本数据类型)

⑤如果有两个以上的语义,用“,”隔开

⑥注意setter方法不要忘记冒号

⑦使用属性的情况下,如果同时重写getter setter方法,需要写@synthesize

示例:

声明.h

@interface Person:NSObject

@property(nonatomic,setter=myNameIs:,getter=liuwa,copy)NSString* name;

@property(nonatomic,assign)NSInteger age;

@property(nonatomic,retain)NSString *sex;

@property(nonatomic,copy)NSString *color;

@end

实现.m

@implementation Person

@synthesize sex = _sex;

@synthesize age = _age;

@synthesize color = _color;

//retain

- (void)setSex:(NSString *)sex{

if(sex != _sex){

[_sex release];

_sex = [sex retain];

}

}

- (NSString *)sex{

return nil;

}

//assign

- (void)setAge:(NSInteger)age{

_age = age;

}

- (NSInteger)age{

return _age;

}

//copy

- (void)setColor:(NSString *)color{

if(color != _color){

[_color release];

_color = [color copy];

}

}

- (NSString *)color{

return [[_color retain] autorelease];

}

@end

时间: 2024-08-28 01:16:26

三、属性和点语法的相关文章

oc 属性、点语法、KVC

?.属性 概念 属性是Objective-C 2.0定义的语法,为实例变量提供了setter. getter?法的默认实现.能在?定程度上简化程序代码,并且增强实例变量的访问安全性 定义 @interface Person : NSObject @property 属性的类型 属性的名字 @end 等价 { NSInteger _number;  //实例变量 } - (void)setNumber:(NSInteger)number; - (NSInteger)number; ?.属性的Att

oc基础复习05-OC的属性 和 点语法(转)

这篇文章大部分都是转载网络上的 里面有部分我更改的内容 一.设置器setter 访问器getter setter: set+首字母大写的实例变量名 如:- (void)setNickName:(NSString *) name;//参数名不要与实例变量名相同 getter: 与实例变量名相同(没有短横线),并且返回值类型也一致 例: @interface Cup:NSObject { float _price; } - (void)setPrice:(float)price; - (float)

ASP.NET知识重新梳理(三)------C#基础语法

C#基础语法:1.基本语法:无论代码中是否有空格,回车符,tab字符(统称为空白字符),C#编译器都不考虑这些字符: C#字符由一系列语句组成,每个语句由一个分号来结束: C#是一个块结构的语言,所有的语句都是代码块的一部分,这些块用花括号来界定("{"和"}"): C#中的注释:标记注释/*...*/ 单行注释//... 单行注释/// (可以配置VS,在编译项目时,提取这些注释后面的文本,创建一个特殊格式的文本文件,该文件可用于 创建文档说明书): C#代码是区

JUnit4学习笔记(三):assertThat语法与Matcher

一.使用JUnit的一般测试语法 org.junit.Assert类里有各种断言方法,大部分情况下我们会像下面这个例子一样编写测试: 1 public class AssertThatTest { 2 private int id = 6; 3 private boolean trueValue = true; 4 private Object nullObject = null; 5 private String msg = "Hello World"; 6 7 @Test 8 pu

OC基础之-Property(属性)和点语法

学习属性之前回忆一下之前学到的setter方法和getter方法: (1)setter方法的作用:用来为单一的实例变量赋值(只能是一个实例变量,多了的叫做get方法) (2)setter方法的写法标准: - 号方法,  无返回值,   名字以set开头+要设置的变量的实例变量名(首字母需大写):(setter方法有且只有一个参数)+参数的类型(和实例变量的类型相同)+参数名(和实例变量名相同) (3)getter方法的作用:用来获取单一实例变量的值. (4)getter方法的写法标准: - 号方

我眼中的Linux设备树(三 属性)

三 属性(property) device_type = "memory"就是一个属性,等号前边是属性,后边是值.节点是一个逻辑上相对独立的实体,属性是用来描述节点特性的,根据需要一个节点由0个,1个或多个属性表示节点的特性.一个属性由名字和值两部分组成. 和节点的名字类似,规范要求属性名字由1到31个字符组成.和节点名字字符的种类有些区别,不允许有大写字母,增加了问号和井号两个字符.不清楚为什么没有和节点名字完全保持一致,井号对于初学者容易误解,以为是注释. 0-9    数字a-z

MySQL-进阶18 存储过程- 创建语句-参数模式(in/out/inout-对应三个例子) -调用语法-delimiter 结束标记'$'

/* MySQL-进阶18 存储过程 和 函数 存储过程和函数:类似于java中的方法 好处: 1.提高代码的重用性 2.简化操作 */ #存储过程 /* 含义: 一组已经预见编译好的SQL语句的集合, 理解成批处理语句; 好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数,提高了效率 */ /* #一: 创建语句 create procedure 存储过程名(参数列表) begin 存储过程体(一组合法的SQL语法) end 注意: 1.参数列表包含三个部分 : 参数模式 参数名

OC --(8)-- 属性、点语法、KVC

一.属性 1.什么是属性 属性是 Objective - c 2.0 定义的语法,为实例变量提供了 setter.getter 方法的默认实现 能够在一定程度上简化程序,并且增强实例变量的访问安全性. 2.属性的定义 三.KVCKVC(Key-Value-Coding),键值编码,是一种间接访问实例变量的方法 key: 键,用于标示实例变量 value: 实例变量对应的值 修改值 获取值 注意:

Jquery第三课 Javascript基本语法

注释 JavaScript支持与C语言相同的注释方法,单行注释(//)和多行注释(/* */).代码中的注释在执行的时候将被忽略,只是起到说明代码的功能,便于代码维护和理解. //单行注释 /* 多行注释 1. 这是一行注释 2. 这还是一行注释 3. 注释只是起到说明性作用 */ 空白字符 空白字符包括空格.回车.换行等符号,在JavaScript中也会被忽略掉,只是起到维持代码格式的作用,方便查看.在实际应用中,JavaScript代码部署到服务器上时常常使用工具将代码中的空白字符去掉,以便