黑马程序员——Objective-C语言知识整理——类成员变量的设置与获取
2015-07-07 12:34
465 查看
------- android培训、java培训、IOS培训期待与您交流! ----------
点语法是xcode的特性,帮用户进行代码替换的。
Person类含_age与_name两个成员变量。
设置成员变量的值使用:
Person *p = [Person new];
p._age = 18;
p._name = @"Danny";
等同于使用setter方法:
Person *p = [Person new];
[p setAge:18];
[p setName:@"Danny"];
(2) 获取成员变量值
Person类含_age与_name两个成员变量。
使用点语法获取成员变量的值:
int a = p.age;
NSString *s = p._name;
等同于使用getter方法:
int a = [p age];
NSString *s = [p name];
4、点语法使用注意
点语法使用本质是调用类的setter与getter对象方法,如果没有指定方法,不能使用点语法。
同时,注意setter与getter方法使用,防止self点语法死循环调用。
使用格式:@property 类型名 方法名
相当于get与set方法的声明。
代码示例:
6、@property使用注意
(1) 只能写在@interface与@end之间。
(2) 是用来自动生成get与set方法的。
(3) 告诉@property使用成员变量的类型
与@property成对使用,完成类的set与get方法的声明与实现。
使用格式:@synthesize 变量名1,变量名2……(成员变量类型一致)。
相当于get与set方法的实现,并且创建实例的成员变量。
代码示例:
- (int)age{
return age;
}
*/
@end
- (int)age{
return _age;
}
*/
@end
变量是私有的,不能被继承使用。
1、传统的getter与setter方法
首先,在类的声明处定义成员变量,并声明各变量的set与get方法,最后在类的实现部分,实现各成员变量的set与get方法。2、点语法介绍
与传统的getter与setter方法不同,点语法的使用更为方便。但是使用点语法并不是直接访问实例变量的,而是由xcode工具自动替换为setter与getter方法的调用的。点语法是xcode的特性,帮用户进行代码替换的。
3、点语法的使用
(1) 设置成员变量值Person类含_age与_name两个成员变量。
设置成员变量的值使用:
Person *p = [Person new];
p._age = 18;
p._name = @"Danny";
等同于使用setter方法:
Person *p = [Person new];
[p setAge:18];
[p setName:@"Danny"];
(2) 获取成员变量值
Person类含_age与_name两个成员变量。
使用点语法获取成员变量的值:
int a = p.age;
NSString *s = p._name;
等同于使用getter方法:
int a = [p age];
NSString *s = [p name];
点语法使用本质是调用类的setter与getter对象方法,如果没有指定方法,不能使用点语法。
同时,注意setter与getter方法使用,防止self点语法死循环调用。
5、@property用法
编译器指令@property的使用。使用格式:@property 类型名 方法名
相当于get与set方法的声明。
代码示例:
///////////////@property 使用 #pragma mark Person类 @interface Person:NSObject { int _age; NString _name; } @property int age; @property NSString name; @end
6、@property使用注意
(1) 只能写在@interface与@end之间。(2) 是用来自动生成get与set方法的。
(3) 告诉@property使用成员变量的类型
7、@synthesize使用
编译器指令@synthesize的使用。与@property成对使用,完成类的set与get方法的声明与实现。
使用格式:@synthesize 变量名1,变量名2……(成员变量类型一致)。
相当于get与set方法的实现,并且创建实例的成员变量。
代码示例:
#pragma mark Person类的实现 @implementation Person @synthesize age; @synthesize name; /* 等同于 - (void)setName:(NSString *) name{ name = name; } <pre name="code" class="objc">- (void)setAge:(int) age{ age = age; }
- (NSString *)name{ return name; }
- (int)age{
return age;
}
*/
@end
8、@synthesize指定实例变量赋值
使用方法格式:@synthesize 方法名1=变量名1,方法名2=变量名2#pragma mark Person类的实现 @implementation Person @synthesize age=_age,name=_name; <pre name="code" class="objc">/* 等同于 - (void)setName:(NSString *) name{ _name = name; } <pre name="code" class="objc">- (void)setAge:(int) age{ _age = age; }
- (NSString *)name{ return _name; }
- (int)age{
return _age;
}
*/
@end
9、增强型的@property
增强型的@property将成员变量的get与set方法的声明与实现工作都完成了,而且默认的使用带下划线的成员变量,若不存在,则自动定义生成相关成员变量。变量是私有的,不能被继承使用。
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构
- objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用(未完成)
- windows下objective-c的cocoa框架编程,可以有图形界面哟