OC_属性点语法

点语法和@property

**************************************************************************

知识点

1.setter/getter函数

2.点语法

[email protected]语法和属性

========================================

一、setter和getter方法

1.setter和getter方法的作用

setter  方法:   修改对象的字段/实例变量

getter 方法:   读取对象的字段/实例变量

setter 方法: 可以带有多个参数,可以同时给多个变量赋值

getter方法: 不带参数,只能返回一个变量的值。

2.setter和getter如何命名

setter 方法的命名:

_xxx: 表示的是成员变量的名字

//带有一个参数

- (void)setXxx:(参数类型)参数1;

//带有多个参数

- (void)setXxx:(参数类型)变量名字  xxx:(参数类型)变量名字 ……;

getter 方法的命名:

- (返回值类型)xxx;

3.成员变量的命名

带上下划线

=======================================

二、点语法

1.为什么要设计点语法

C ++, jave ,c#  都有点语法 为了让程序设计简单化

2.点语法的作用

属性可以在不使用 【对象指针 方法名字】 的情况下使用点语法。

点语法只是访问setter getter方法,不是使用成员变量。注意和结构体的区别。

3.点语法的调用

//一个参数的set方法可以使用点语法赋值

[xiaoxin setName:@“小新”];

//这不是使用成员变量,是使用set方法

xiaoxin.name = @"小新";

//可以通过.语法调用get方法

NSString * ret = [xiaoxin name];

ret = xiaoxin.name;

//xiaoxin.name在等号左边就是set方法,使用这个表达式的值,就是get方法

***************************************************************************************

练习:

写一个Person类,  使用点语法赋值和取值:

NSStirng   *_name;

NSInteger  _age;

NSString   *_identical; //身份证

=======================================

三、属性(@property)和合成(@synthesize)

1.思考:当一个类中的成员变量非常多的时候,setter和getter是否会显得非常臃肿,@property和@synthesize可以使代码变得简洁。

[email protected]用处

1) 让编译器自动声明setter和getter

[email protected]使用

1)  @property 成员变量类型  变量名;

//声明一个属性,相当于声明了下面两个方法

//声明一个属性,而且会同时生成一个名为_xxx的成员变量

@property NSString * name;

//- (void)setName:(NSString *)name;

//- (NSString *)name;

//会自动关联名为_name的变量;//_name是私有的

[email protected]用处

1)让编译器自动实现setter和getter函数

[email protected]使用(Xcode4.6以后可以省略)

@synthesize name = _name;

//Xcode4.6以前,需要这样实现,如同实现了下面两个方法;

//Xcode4.6起,无需写@synthesize,自动实现下面两个方法,会自动关联名为_xxx的变量;

//如果类中并没有对应的变量,会自动生成相应的变量。

========================================================

练习:

定义一个书本的类:

字段:      书名   name

页数   pages

价格   price

作者   author

要求使用:@property 实现set和get方法。使用点语法操作set、get

======================================

@property属性

1.原子操作

atomic(缺省)/nonatomic

(1)atomic(默认值)  原子性:对当前属性进行加锁,线程安全的。消耗 性能。访问速度慢。

(2)nonatomic      非原子性:不需要加锁,线程不安全的。访问速度快。

//UI所有的属性都要用:nonatomic

2. assign  直接赋值修饰符(缺省),一般用在基本类型。

//缺省(默认)修饰符

@property (assign) NSString * name;

//同时生成set、get方法

直接赋值,展开的set方法:

- (void)setName:(NSString *)name

{

_name = name;

}

3.读写操作

readonly/readwrite(缺省)

//只读修饰符

//只生成getter,没有setter

@property (readonly) NSUInteger age;

/缺省修饰符

//同时生成set、get方法

@property (readwrite) NSString *name;

4. 给set方法和get方法起别名

//getter修饰符

//给get方法起别名

@property (getter = myWeight) NSUInteger weight;

//setter修饰符

//给set方法起别名

@property (setter = setLife:) BOOL alive;

//一个属性可以添加多个修饰符,多个修饰符间用逗号隔开。

@property (setter = setUsername:, getter = getUsername,readonly) NSString *name;

5. 多个属性修饰符,需要用逗号隔开

@property (nonatomic, readonly,getter = birth)

NSString * birthday;

时间: 2024-12-28 15:43:34

OC_属性点语法的相关文章

OC_语法入门_day1_类的定义

H:/Objective-C/OC_day0/00-OC经典入门.m /*================第一段代码(start)========================== = #import <Foundation/Foundation.h> // 1,类的声明 @interface Car : NSObject { // 所有成员变量,默认初始值均为0 @public int wheels; int speed; } // 对象的方法 // 1,前面固定写减号- // 2,不同于

ruby+watir 集成Eclipse 自动化安装部署及语法,附全安装包

关于Watir的安装文章网上一大堆,但真正靠谱的没有几个,不是报错就是安装包不对.我开始也是初哥,用了近一个星期才总结出来一套完整的安装理论,共享一下往大家可以从中可以少走一些弯路.本文提供全量安装包下载,包括:ruby + watri 自动化部署集成Eclipse 全量安装包 (包括:watir-1.5.4.ruby186-26.WatirRecorder_Setup_lite.dltk-core-ruby.dotnetfx.rubygems-1.3.7.安装说明. 安装说明:1. 安装 ru

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

Python基本语法

Python基本语法 1.第一个Python代码 print('Hello Word!') 2.注释 1.定义:注释即解释,主要用于提示相关代码的信息. 2.注释分类:单行注释和多行注释 单行注释:# 注释内容 多行注释:''' 注释内容 ''' 或 """ 注释内容 """ 3.变量 1.定义:变量就是可以改变的量 2.命名规则: 1.汉字变量名能用,不推荐使用 2.数字不能开头 3.不可以使用特殊字符,除_ 4.变量区分大小写 5.可以使用关

Java基础语法(1)

一.Java概述 1.1Java语言平台 图1-1  java语言平台 注:开发者都是安装javaSE平台的软件. 1.2.跨平台性 平台:指的是操作系统(Windows,Linux,Mac) 跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行 原理:实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine) 图1-2 跨平台版本 1.3      JVM   JRE   JDK说明   -A:什么是JVM JVM是java虚拟机(JVM Java Vi

eclipse使用与java语法规则

eclipse的使用 1.运行点击"三角图标"或右键Run As运行2.3. java语法规范 1.括号要成对出现2.每句代码应该有分号结束3.java语法区分大小写4.一个文件只能写一个带有public的class声明,还必须和文件名一致.一个文件中不可以有多个带有public的修饰符号5.名称写的时候不要包含关键字和非法字符(字母和下划线开头可以,也可以用数字结尾)6.java代码的语法全部都是半角符号7.学会规范的写代码. 写代码的好习惯: 1.常按保存,写完一句或几句就按一次C