文档章节

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

兔之
 兔之
发布于 2017/09/11 17:12
字数 203
阅读 33
收藏 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;
}

© 著作权归作者所有

共有 人打赏支持
兔之
粉丝 66
博文 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
记录一下iOS开发中琐碎的点点_3

UIWindow 正常情况下, 一个应用中只有一个UIWindow对象, 但是实际上iOS应用是支持多个UIWindow对象的. UIWindow的作用: 作为容器,包含app所要显示的所有视图 传递触摸消息到程序中view和其他...

hell03W
2016/04/26
43
0
Objective C 的setter赋值函数视频基础提高课程(三)

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

马洪伟
2015/01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

node上的redis调用优化示例

Node.js读写数据到influxDB,目前已经有一个库node-influx, 这个库功能非常强大,但是我个人使用这个库的时候,遇到无法解决的问题。 使用curl都可以写数据到influxDB,但是用node-influx总是...

前端攻城老湿
11分钟前
1
0
The setting logImpl is not known

问题: org.apache.ibatis.builder.BuilderException: The setting logImpl is not known. Make sure you spelled it correctly (case sensitive). MyBatis 3.1.1 -jar还没有 logImpl 这个设......

晨猫
22分钟前
1
0
eslint一些规则

一、指定js文件不使用 ESLint 语法检查 1.整个文件范围内禁止规则出现警告 将/* eslint-disable */放置于文件最顶部 /* eslint-disable */alert('foo'); 2.在文件中临时禁止规则出现警告 ...

xiaoge2016
23分钟前
1
0
mac终端常用命令

ls ls,list的简写,列出目录的内容。 -a:显示隐藏文件 -l:以列表方式显示文件信息 -h:配合-l,显示更人性化 配合通配符使用 ls *.txt:显示所有以.txt结尾的文件 ls ?.txt:显示‘任意字符.tx...

xiaobai1315
24分钟前
1
0
java命令行读取配置,和加载jar的方式

--spring.profiles.active=t2,t3,xextest --spring.profiles.include=quartz-jp-Djava.ext.dirs=libs-Dspring.config.location=/data/apps/DBconfig -cp  "config/*"  start.sh......

经常把天聊死的胖子
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部