- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
设置类的成员变量的一些访问修饰符
学习前:你必须会什么?
了解什么是封装。什么是可读、可写。
一、本章笔记
一、
格式
@property (属性修饰符) 数据类型 变量名称;
如果给一个属性 同时提供了getter/setter方法,那么我们称这个属性为 可读可写属性
如果 只 提供getter方法, 那么我们称这个属性为 只读属性
如果 只 提供setter方法, 那么我们称这个属性为 只写属性
如果既没有提供getter 也没有提供setter方法,那么 我们称这个属性为私有属性
readonly : 代表只生成getter方法 不生成setter方法
readwrite : 代表即生成getter方法,也生成setter方法 (默认情况下@property 是 readwrite)
只写的系统不提供 需要程序员手动写
二、修改getter方法名称
系统默认生成的方法名称
- (void)setHeight:(int)height;
- (double)height;
强制修改getter方法名称
getter=abc
- (double)abc;
三、修改setter方法名称
系统默认生成的方法名称
- (void)setWeight:(int)weight;
- (double)weight;
强制修改setter方法名称
setter=tiZhong:
- (void)tiZhong:(int)weight;
四、程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值,我们都会将获取的方法名称改为isXXX
二、code
main.m
#pragma mark 05-property修饰符
#pragma mark 概念
/*
一、
格式
@property (属性修饰符) 数据类型 变量名称;
如果给一个属性 同时提供了getter/setter方法,那么我们称这个属性为 可读可写属性
如果 只 提供getter方法, 那么我们称这个属性为 只读属性
如果 只 提供setter方法, 那么我们称这个属性为 只写属性
如果既没有提供getter 也没有提供setter方法,那么 我们称这个属性为私有属性
readonly : 代表只生成getter方法 不生成setter方法
readwrite : 代表即生成getter方法,也生成setter方法 (默认情况下@property 是 readwrite)
只写的系统不提供 需要程序员手动写
二、修改getter方法名称
系统默认生成的方法名称
- (void)setHeight:(int)height;
- (double)height;
强制修改getter方法名称
getter=abc
- (double)abc;
三、修改setter方法名称
系统默认生成的方法名称
- (void)setWeight:(int)weight;
- (double)weight;
强制修改setter方法名称
setter=tiZhong:
- (void)tiZhong:(int)weight;
四、程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值,我们都会将获取的方法名称改为isXXX
*/
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
Person *p = [Person new];
p.age = 25;
// p.name = @"lyh"; // readonly 只读属性
p.height = 1.71;
p.weight = 65.0;
NSLog(@"height = %f",[p abc]);
[p tiZhong:66.0];
NSLog(@"weight = %f",[p weight]);
[p setMarried:YES];
/*
if ([p married]) {
NSLog(@"已婚");
}
else
{
NSLog(@"未婚");
}*/
if ([p isMarried]) {
NSLog(@"已婚");
}
else
{
NSLog(@"未婚");
}
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
/*
如果给一个属性 同时提供了getter/setter方法,那么我们称这个属性为 可读可写属性
如果 只 提供getter方法, 那么我们称这个属性为 只读属性
如果 只 提供setter方法, 那么我们称这个属性为 只写属性
如果既没有提供getter 也没有提供setter方法,那么 我们称这个属性为私有属性
格式
@property (属性修饰符) 数据类型 变量名称;
readonly : 代表只生成getter方法 不生成setter方法
readwrite : 代表即生成getter方法,也生成setter方法 (默认情况下@property 是 readwrite)
只写的系统不提供 需要程序员手动写
*/
@property int age;
#pragma mark 1.修改getter方法名称
/*
系统默认生成的方法名称
- (void)setHeight:(int)height;
- (double)height;
强制修改getter方法名称
getter=abc
- (double)abc;
*/
@property(getter=abc) double height;
#pragma mark 2.修改setter方法名称
/*
系统默认生成的方法名称
- (void)setWeight:(int)weight;
- (double)weight;
强制修改setter方法名称
setter=tiZhong:
- (void)tiZhong:(int)weight;
*/
@property(setter=tiZhong:) double weight;
@property(readonly) NSString *name;
#pragma mark 3.开发中 最常见修改getter方法名称,而修改setter名称比较少
// 是否已婚
// 程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值,我们都会将获取的方法名称改为isXXX
@property(getter=isMarried) BOOL married;
@end
>>>.m
#import "Person.h"
@implementation Person
@end