文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/14 09:23
字数 1132
阅读 2
收藏 0
点赞 0
评论 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
博文 354
码字总数 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

关于@property后面修饰符详解   

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

北方人在上海 ⋅ 2016/09/13 ⋅ 0

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

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

曹真 ⋅ 2017/06/21 ⋅ 0

iOS 解决闭环引用问题

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

IamOkay ⋅ 2016/03/26 ⋅ 0

AppCode 2016.3 EAP 更新,Bug 修复

AppCode 2016.3 EAP(build 163.6957.25) 发布了,现已开放下载。AppCode 是一个全新的 Objective-C、Swift 的集成开发环境,用于帮助开发 Mac、iPhone 和 iPad 的应用程序。 该版本针对以下...

王练 ⋅ 2016/10/28 ⋅ 1

Objective—C语言的新魅力——Nullability、泛型集合与类型延拓

Objective—C语言的新魅力 一、引言 在Xcode7中,iOS9的SDK已经全面兼容了Objective-C的一些新特性和新功能。这些功能都只作用于编译期,对程序的运行并没有影响,因此,它可以很好的向下进行...

珲少 ⋅ 2015/10/09 ⋅ 3

「Objective-C基础」三大特性:封装、继承、多态

我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这三大特性是学习类的时候,必须理解的问题,既是基础,更该给予重视。 一、封装(Encapsulation) 封装就是对类中的一些...

无忌不悔 ⋅ 2017/08/08 ⋅ 0

OC内存管理常见的面试题

#####面试:说一说对内存管理的理解?(原理) - 手动内存管理(MRC):1.在创建一个对象的时候系统会自动创建这个对象的引用计数并赋值为1;2.当引用计数为0的时候,对象会去调用dealloc方法来...

鹿微微鹿 ⋅ 2016/03/25 ⋅ 0

OC-基础总结(一)

OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 #improt OC程序的源文件的后缀名是.m m代表message表示消息机制。main 仍然是OC程序的入口...

xx_cc ⋅ 2017/04/22 ⋅ 0

关于C# 中的Attribute 特性

关于C# 中的Attribute 特性 作者: 钢钢 来源: 博客园 发布时间: 2011-01-09 23:30 阅读: 13439 次 推荐: 12 原文链接 [收藏] 摘要:纠结地说,这应该算是一篇关于Attribute 的笔记,其中的一...

随智阔 ⋅ 2013/12/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Boost库编译应用

版本:Boost 1.66.0 Windows库编译 官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。 环境:Windows 10 + Visual Studio 2017 Boost编译出来库命名 boost库生成文件命...

水海云 ⋅ 5分钟前 ⋅ 0

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build ...

ArlenXu ⋅ 5分钟前 ⋅ 0

iview tree组件层级过多时可左右滚动

使用vue+iview的tree组件,iview官网iview的tree树形控件 问题描述:tree层级过多时左右不可滚动 问题解决:修改overflow属性值 .el-tree-node>.el-tree-node_children { overflow: vi...

YXMBetter ⋅ 7分钟前 ⋅ 0

分布式锁

通过数据库实现 http://www.weizijun.cn/2016/03/17/%E8%81%8A%E4%B8%80%E8%81%8A%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E7%9A%84%E8%AE%BE%E8%AE%A1/ ZK实现:curator-recipes分布式锁的使用......

素雷 ⋅ 15分钟前 ⋅ 0

Sublime Text3 快捷键

选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。 Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名...

AndyZhouX ⋅ 22分钟前 ⋅ 0

XamarinAndroid组件教程RecylerView自定义适配器动画

XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画。此时,需要让自定义的动画继承Animation...

大学霸 ⋅ 22分钟前 ⋅ 0

eureka 基础(二)

使用Eureka服务器进行身份验证 如果其中一个eureka.client.serviceUrl.defaultZone网址中包含一个凭据(如http://user:password@localhost:8761/eureka)),HTTP基本身份验证将自动添加到您...

明理萝 ⋅ 25分钟前 ⋅ 1

Kubernetes(五) - Service

Kubernetes解决的另外一个痛点就是服务发现,服务发现机制和容器开放访问都是通过Service来实现的,把Deployment和Service关联起来只需要Label标签相同就可以关联起来形成负载均衡,基于kuberne...

喵了_个咪 ⋅ 25分钟前 ⋅ 0

更新队友POM文件后报错

打开报错的地方的pom及其引用方法所在文件的pom,观察其版本号是否一致,不一致进行更改

森火 ⋅ 38分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 43分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部