文档章节

Objective-C 中自动生成 setter getter 方法

兔之
 兔之
发布于 2017/09/11 17:12
字数 203
阅读 35
收藏 1

对于 C++ 这种语言,类中的私有成员变量需要自己去实现 setter 和 getter 方法。这种重复的东西其实没必要手动去完成,可以让编译器去自动生成。

Objective-C 中使用 @property@synthesize 关键字来自动生成这些方法。

Fraction.h

#import <Foundation/Foundation.h>

@interface Fraction : NSObject

@property int numerator, denominator;

- (void) print;

@end

在 .h 文件中用 @property 关键字指明 numerator 和 denominator 两个成员变量需要去生成 setter getter 方法

Fraction.m

#import "Fraction.h"

@implementation Fraction

@synthesize numerator, denominator;

- (void) print
{
    NSLog(@"%i/%i", numerator, denominator);
}

@end

在 .m 文件的类实现中用 @synthesize 关键字指明自动生成方法

main.m

#import <Foundation/Foundation.h>
#import "Fraction.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Fraction* myFraction = [[Fraction alloc] init];
        
        [myFraction setNumerator: 111];
        [myFraction setDenominator: 3];
        
        NSLog(@"The value of myFraction is: %i", [myFraction numerator]);
    }
    
    return 0;
}

© 著作权归作者所有

共有 人打赏支持
兔之
粉丝 68
博文 247
码字总数 95896
作品 7
深圳
程序员
私信 提问
Objective-C之Property

在Objective-C中引入了属性这个概念,当然了这东西并不是Objective-C首创而且独有的特性,例如C#里边也有属性的概念,因此学过C#的朋友应该很容易就掌握Objective-C中的属性这个知识点。 1 ...

Ajkl
2012/11/25
0
0
Objective-C使用@dynamic和@synthesize

@dynamic 意思是由开发人员提供相应的代码:对于只读属性需要提供 getter,对于读写属性需要提供 getter 和setter。 @synthesize 意思是,除非开发人员已经做了,否则由编译器生成相应的代码...

千铭
2013/09/17
0
0
Objective-C Property 和 Synthesize

Objective-C中的@property、@synthesize及点语法都是与两个函数有关的,一是setter函数,另一个是getter函数 以前我们是这样来定义setter与getter函数的 @interface Dog:NSObject { int age;...

子非鱼你造么
2015/05/17
0
0
Objective C 的setter赋值函数视频基础提高课程(三)

腾讯视频 Objective C 的setter赋值函数 链接:http://dwz.cn/zH6nM 一、setter和getter的一般写法 setter和getter器可以说是一个类最基本的东西,任何一门面向对象的语言,都又这个概念,C...

马洪伟
2015/01/05
0
0
Objective-c中@property和@synthesize的用法

@代表“Objective-C”的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用。 功能:让编译好器自动编写一个与数据成员同名的方法声明来省去读写方...

今日竹石
2014/01/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Flink 幕后之内存管理

Flink 幕后之内存管理 引言 目前很多大数据处理框架,例如Hadoop、Spark、Storm、Flink等。它们都基于JVM语言开发(java or scala),运行在JVM上。为了加速合并或者排序(基于磁盘的方式通常...

moyiguke
16分钟前
2
0
风起云涌,看云计算如何赋能媒体行业?

在媒体行业的转型升级中,云计算的出现多维度促进了媒体融合,打破传统媒体行业与新媒体的界限和竞争格局,在媒体素材管理、移动端功能演进的过程中扮演着重要角色,颠覆了传统媒体新闻采编、...

七牛云
18分钟前
0
0
Mybatis开发遇到问题汇总

mybatis 中![CDATA[...]] 在今天使用Mybatis的xml文件中写sql语句时写入了一些特殊字符 如 < > & 等,但解析xml文件的时候会被转义,事实上并不希望它被转义,可以使用<![CDATA[ ]]>. 这是XML...

wangwei2134
27分钟前
0
0
参数验证 @Validated 和 @Valid 的区别

来源:blog.csdn.net/qq_27680317/article/details/79970590 整编:Java技术栈(公众号ID:javastack) Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范......

Java技术栈
29分钟前
0
0
JS实现继承的几种方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。 JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: ...

不负好时光
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部