您的位置:首页 > 编程语言 > C语言/C++

第04天OC语言(05):property修饰符

2017-07-14 00:00 281 查看
不要等到明天,明天太遥远,今天就行动。

#####须读:看完该文章你能做什么?

设置类的成员变量的一些访问修饰符

#####学习前:你必须会什么?

了解什么是封装。什么是可读、可写。

#####一、本章笔记

 一、
 格式
 @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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OC语言