OC中关于属性,特性,点语法的总结


 @synthesize 属性的实现部分,实现属性自动生成的setter以及getter方法.

 name 属性名,指定要实现哪一个属性生成的setter以及getter方法

 _name,指定settergetter方法内部所要操作的实例变量.

 如果指定的实例变量没有定义,系统会自动生成指定的实例变量,但是生成的实例变量是私有的,子类不能直接访问

如果实例变量想让子类访问,.h文件中必须定义,才可以被继承

如果未指定setter以及getter内部所要访问的实例变量时,系统自动生成和属性名一样的实例变量.

如果对于settergetter方法,我们实现了,系统就不会再自动生成.

如果在.m文件中未通过@synthesize对属性进行合成,系统会自动合成,只不过此时系统默认的settergetter方法内部所操作的实例变量是_属性名.

1.当把语义特性声明为assign,setter以及getter方法内部实现

//如果将@synthesize省略,并且我们自己实现setter以及getter方法时,系统就不会生成对应的setter以及getter,还有实例变量.

- (void)setName:(NSString *)name

{

    _name = name;

}

- (NSString *)name

{

   return  _name;

}

2.当把语义特性声明为retain,setter以及getter方法内部实现

- (void)setName:(NSString *)name

{

   if (_name != name) {

        [_name release];

       _name = [name retain];

   }

}

- (NSString *)name

{

    return [[_name retain]autorelease];

}

3.当把语义特性声明为copy,setter以及getter方法内部实现

- (void)setName:(NSString *)name

{

    if (_name != name) {

        [_name release];

        _name = [name copy];

   }

}

- (NSString *)name

{

    return [[_name retain]autorelease];

}


@synthesize name = _name,gender = _gender,age = _age,height = _height,weight = _weight;

 setter 方法的作用:为单一的实例变量赋值

 setter 方法规范的写法: -号方法,无返回值,名字以set开头+要设置的实例变量名

 (首字母大写):(setter方法有且只有一个参数) +参数的类型(和实例变量类型相同) + 参数名(和实例变量名相同).

 getter 方法的作用:获取单一实例变量的值

 getter 方法的命名规范: -号方法 ,有返回值(返回值类型和实例变量类型相同)方法名直接和实例变量名相同,无参数


属性是oc2.0之后出来的新的语法,用来替代setter以及getter方法,使用属性可以快速是创建setter以及getter方法的声明,setter以及getter方法的实现.另外还添加了对实例变量操作的安全处理.

@property 用来定义属性,NSString *属性的类型(和实例变量类型相同) name属性名(和实例变量名相同)

切记:@property只是自动声明setter以及getter方法的声明.

属性的特性(attribute)

 第一特性:读写特性

    (1)reaonly:告诉编译器,属性在自动生成方法时,只会生成getter方法不会生成setter方法.

    (2)readwrite:告诉编译器,属性在自动生成方法时,既要生成setter方法也要生成getter方法.系统默认的读写特性.

    (3)setter = aa:告诉编译器,当自动生成setter方法时,setter方法的方法名为指定的名字aa:不采用默认的.

    (4)getter = aa:告诉编译器,当自动生成getter方法时,getter 方法的方法名为指定的名字aa:不采用默认的.

     第二大特性:(原子性特性)

     (1)atomic:原子特性,保证线程安全,内部做了安全处理(加锁与解锁).系统默认的原子特性

     (2)nonatomic:非原子性,不保证线程安全.因为对于setter以及getter方法的使用,比较频繁,在一段时间内可能要多次访问,所以使用atomic会非常消耗系统的资源,降低程序的执行效率,使用nonatomic虽然不保证线程安全,但是使用一般情况下都是安全的,所以对于原子特性,使用nonatomic.

     第三大特性:语义特性

     (1)assign :直接赋值,使用针对于基本数据类型.也可针对对象类型.系统默认的语义特性.

     (2)copy : 针对于对象类型,并且要服从NSCopying协议的对象才可以.会复制一个新的对象,拥有新的对象的所有权.(引用计数+1).(先暂时这么理解)

     (3)retain:针对于对象类型,会造成对象的引用计数+1.

点语法是一种快速访问setter以及getter方法的方式.声明属性默认生成对应的setter以及getter方法.所以属性和settergetter方法都有关联


       对象.属性名----如果在等号的左边,意味着调用setter方法,除此之外,都是调用getter方法.

点语法是一种快速访问setter以及getter方法的方式.声明属性默认生成对应的setter以及getter方法.所以属性和settergetter方法都有关联

      对象.属性名----如果在等号的左边,意味着调用setter方法,除此之外,都是调用getter方法.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值