文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/14 09:23
字数 1132
阅读 2
收藏 0
  • 不要等到明天,明天太遥远,今天就行动。

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

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

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

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


#####一、本章笔记

 一、
 格式
 @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

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
私信 提问
iOS基础·属性的修饰词与setter的关系(@property、@synthesize、@dynamic、retain、assign、copy、weak、strong、nonatomic、atomic、readonly、readwrite等修饰词与setter、getter等存取方法之间的关系)

很多人讲属性修饰词的时候,喜欢从字面或者定义的角度介绍它们间的区别。这篇文章,我们侧重从修饰词对setter方法的影响直接展示区别。 1. 实例变量:命名区别于全局变量和局部变量 1.1 命名...

陈满iOS
2017/12/11
0
0
关于@property后面修饰符详解   

@property后面有哪些修饰符 1.线程安全的 atomic、nonatomic 2.访问权限的 readonly、readwrite 3.内存管理(ARC) assign、strong、weak、copy 4.内存管理(MRC) assign、retain、release...

北方人在上海
2016/09/13
35
0
ios开发 - oc代码质量提高(一)

前言: 本文主要针对ios开发的菜鸟,进行基础知识梳理和代码质量提高。或许对某些知识点理解的不够全面,也可以进行开发,但是我相信,对于技术有追求的童鞋,对自己的代码质量有一定的要求。...

tigerAndBull
09/09
0
0
【iOS开发干货】Objective-C基础知识点总结(一)

长文,建议跳跃选择性阅读,大约10min可以读完全文。 iOS开发 1.目录 1.个人学习建议 2.知识点整理 3.下集预告 iOS这一行,都过了这么多年,还是水分很足,没有几个愿意安安心心查资料写东西...

曹真
2017/06/21
0
0
iOS 解决闭环引用问题

什么是闭环引用: 所谓闭环引用是2个货2个以上的相互关联的类的对象互相引用,造成了一种引用闭环问题,这种引用造成的问题是闭环内的所有对象都无法及时销毁,这种问题不是Objective-C和Swi...

IamOkay
2016/03/26
504
0

没有更多内容

加载失败,请刷新页面

加载更多

w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
今天
1
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
2
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部