八天学会OC

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

2017-07-21  本文已影响11人  liyuhong
须读:看完该文章你能做什么?

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

学习前:你必须会什么?

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


一、本章笔记
 一、
 格式
 @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

上一篇 下一篇

猜你喜欢

热点阅读