Obj-c7[属性,点语法]

//声明一个属性等价与声明了一个setter和getter方法
//         属性的类型  属性名
//属性的类型决定生成的setter参数类型和getter返回值类型
//属性名决定于生成的setter方法名和getter方法名
// 属性  属性的类型  属性名

@property (nonatomic, retain)NSString *

name;

//@synthesize 属性的实现 name = _name的含义是
//属性帮你生成的setter方法内部在操作那个实例变量.如果.h里面定义过该实例变量,那么直接操作该实例变量,如果没有定义过,那么会自动帮你生成一个实例变量

//属性是一对方法,setter和getter方法

//属性自动生成的实例变量都是私有的,子类不可以直接访问

//ios5.0之后,@synthesize也可以不写,实例变量定义也可以不写,不写的话,帮你自动生成的实例变量是属性名前加_;例如:@synthesize name = _name;

//私有的实例变量,仅仅是子类不能直接访问,但是子类可以通过从父类继承过来的方法去访问

属性的特性

//一,读写特性
//readonly 只读,属性只会帮我们生成getter ,不生成setter
//readwrite 读写,即生成setter ,也生成getter ,不写默认是(读写readwrit)
//setter = 把生成setter方法重新改名(有冒号:,因为有参数)
//getter = 把生成getter方法重新改名

@property (/*readonly,*/setter=成绩:, getter = 成绩)NSInteger number;

//二,原子性特性
//atomic 原子性特性,保证在多线程下访问该实例变量是安全的(会加一把线程锁),不写默认是aomic
//nonatomic 非原子性特性,不保证在多线程下访问的安全性
//[一半我们都用nonatomic]
@property (nonatomic)CGFloat score;

//三,setter语义特性(assign,ratain,copy会影响生成的setter方法的内部实现)
//assign,通常用于基本类型,生成的setter方法就是直接赋值,不写默认是assign
//retain,适用于所有的基本类型,生成的setter方法里面会有内存优化的代码
//copy,仅使用于接受过NSCoping协议的类的对象,生成的setter方法内部也是有内存优化的代码

@property (nonatomic,assign)NSString * major;

//属性是一对getter、setter方法,点语法是属性的另一种调用格式。

//凡是符合系统默认setter、getter书写格式的方法都可以使用点语法

//只要有setter和getter就可以使用点语法

//.在等号左边,调用是的setter方法

//.在等号邮编,调用是的getter方法

//没有等号出现.调用是getter方法

时间: 2024-10-19 22:14:16

Obj-c7[属性,点语法]的相关文章

HQL属性查询语法?

上面的HQL:"from Street" ,将取出Steet的所有对象记录,对应的SQL语句为"select * from street"在Hibernate中执行查询的时候,如果实体存在继承关系,将会进行继承关系判定,如:"from Street"将返回所有Street以及Street子类的记录假设:系统中存在Street的两个子类StreetA和StreetB,那么from Street返回的记录将包含这两个子类的所有数据,即使StreetA

obj类型属性取值,属性嵌套取值,为空且不存在安全取值方法

我们业务场景经常会有后台返回数据,然后从数据里面取属性值,es6有了默认值之后,可以直接数据取值,取不到或者没有直接返回的是默认值 抽空时间封装了一个取值的方法: /** * {}类型属性取值,属性嵌套取值,为空且不存在安全取值方法 * @param {obj} obj [要从取值的对象] * @param {string} props [要从对象中取的属性名] * @param {*} defaultValue [属性的默认值] */ safeData (obj, props, default

HQL多个属性查询语法

String hql="select id,name from Street"; 例如:Configuration conf=new Configuration().configure();        SessionFactory sf=conf.buildSessionFactory();        Session session=sf.openSession();        Query query=session.createQuery("select new

取得MSSQL表中字段及主键等属性SQL语法

SELECT c.NAME AS [Column Name], t.NAME AS [Data type], c.max_length AS [Max Length], c.precision, c.scale, c.is_nullable AS [Is Nullable], c.is_identity AS [Is Identity], ISNULL(i.is_primary_key, 0) [Primary Key], i.type_desc, OBJECT_SCHEMA_NAME(fk.o

ES6入门六:class的基本语法、继承、私有与静态属性、修饰器

基本语法 继承 私有属性与方法.静态属性与方法 修饰器(Decorator) 一.基本语法 1 class Grammar{ 2 constructor(name,age){ //定义对象自身的方法和属性 3 this.name = name, 4 this.age = age 5 } 6 // 在原型上定义只读属性 7 get inva(){ 8 return "JS"; 9 } 10 //在原型上定义可读写属性 11 set skill(val){ 12 this._skill =

Linux gcc支持的语法 __attribute__ 属性设置

__attribute__实际上是gcc专有的一种语法,是用来设置函数属性.变量属性.类属性的 语法:之前在C中的结构体对齐中提到过,当时是用来告诉编译器这个结构体的对齐方式 ,其实他还有很多种用法,可以设置很多的属性.语法: __attribute__ (parameter)对于变量: int a __attribute__ ((xxxxx)) = 10; //也可以放在变量的前面,比较灵活 int a __attribute__ ((xxxxx)); // 也可以放在变量的前面,比较灵活对于

javascript的基础知识及面向对象和原型属性

自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; console.log(typeof num); // 1.2 in 运算符 作用:判断指定属性是否存在于指定的对象中. 如果指定的属性存在于指定的对象中,则 in 运算符会返回 true. 语法: 属性 in 对象 返回值:true 或者 false 示例: var obj = { age: 18 };

js创建对象并赋值其属性,以及判断是否有属性值

对象定义 var obj = new Object(); 或 var obj = {}; 添加属性 obj.name = 'tom'; obj.ses='man'; 添加方法 obj.say = function(){ alert('22222'); } 调用 obj.say(); 修改属性 obj.name='jack'; 删除属性 obj.name = undefined; obj.say = undefined; 其name.say属性仍存在obj对象中,怎样才能在obj中移除name属性

Js的prototype属性

prototype作用在JS中的对象上,可以为对象添加属性和方法. 语法:object.prototype.name=value 细节:当通过一个类创建对象以后,当通过对象访问属性的时候,JS查找属性的顺序是: 1.对象本身的属性,比如 obj={} obj.age=18 2.对象的类的prototype中查找,比如 obj={} obj.prototype.age=18 3.对象的根对象(object对象)中查找 4.当一个对象的类定义之后,可以通过prototype为对象的类添加新的属性和方