关于@property及@synthesize以两Demo简单说明

2023-11-01 21:32

本文主要是介绍关于@property及@synthesize以两Demo简单说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



大家应该都知道@代表“Objective-C”的标志,证明您正在使用Objective-C语言,可面对property及synthesize却十分头痛,对于初入iphone开发之路。


就拿我自己来说吧,最初学Objective-C时,根本不晓得@property还有@synthesize有什么作用,为什么要加这两个东东,这两个东东到底用来干嘛了,脑里是一头雾水。心里是空空如也,后面慢慢理解了,看了书后就更清楚了。总算心里有底了。


现在为了新手们不要走我老路,不要像我以前那般痛苦,偶这两 者关系写出来。已便你们清醒。

(说了,只对新手,,,NB大哥们请绕道走哇。。不要笑话,也不要打击我,偶先说明偶是好心,不过有更好说明的NB大哥们,可以进来一起讨论讨论哈。。。)


首先贴两个Demo,大家看看:

Demo一:
#import <UIKit/UIKit.h>

@interface Property1ViewController : UIViewController {
    NSInteger Number1;
    NSInteger Number2;
}

- (void) setNumber1:(NSInteger) Num;
- (void) setNumber2:(NSInteger) Num;
- (NSInteger) Number1;
- (NSInteger) Number2;

@end


#import "Property1ViewController.h"

@implementation Property1ViewController

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [self setNumber1: 1];
    [self setNumber2: 2];
    
    NSLog(@"Number1:%d  Number1 + 2:%d", [self Number1], Number1 + 2);
    NSLog(@"Number2:%d  Number2 + 2:%d", [self Number2], Number2 + 2);
    [super viewDidLoad];
}

//对象的setter方法
- (void) setNumber1:(NSInteger) Num{
    Number1 = Num;
}

- (void) setNumber2:(NSInteger) Num{
    Number2 = Num;
}

//对象的getter方法
- (NSInteger) Number1{
    return Number1;
}

- (NSInteger) Number2{
    return Number2;
}


- (void)dealloc {
    [super dealloc];
}
@end



Demo二:简化版(property and synthesize)

#import <UIKit/UIKit.h>

@interface PropertyViewController : UIViewController {
    NSInteger Number1;
    NSInteger Number2;
}
@property NSInteger Number1;
@property NSInteger Number2;

@end


#import "PropertyViewController.h"
@implementation PropertyViewController

@synthesize Number1, Number2;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [self setNumber1: 1];
    [self setNumber2: 2];
    
    NSLog(@"Number1:%d\nNumber1 + 2:%d", [self Number1], Number1 + 2);
    NSLog(@"Number2:%d\nNumber2 + 2:%d", [self Number2], Number2 + 2);
    [super viewDidLoad];
}

- (void)dealloc {
    [super dealloc];
}
@end

这两个Demo输出的值都是一样的:请看顶图一。其实两者的所要实现的目的就是同一个,只是运用的方法不同,程序写的好坏,主要就是看code,利用最简短的code实现你所要达到的目的,当然前提是,目的一定也要够完美。注重效率,当然质量无疑还是最重要的。


首先先把两个Demo 都浏览一遍,看看红色部分,然后分析一下他们的不同之处,

Demo一中的红色部分说明:

它是手动生成对象的setter和getter方法。


Demo二中的红色部分说明:
@property NSInteger Number1;
@property NSInteger Number2;
@synthesize Number1, Number2;

用了@property 特性自动生成setter和getter方法。
[ 此帖被angellixf在2009-08-26 08:46重新编辑 ]
图片:screenshot_01.jpg 

转自:http://www.cocoachina.com/bbs/read.php?tid-7322.html




这篇关于关于@property及@synthesize以两Demo简单说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/325893

相关文章

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder