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

来源:互联网 发布:java word在线编辑 编辑:程序博客网 时间:2024/05/16 07:57

大家应该都知道@代表“Objective-C”的标志,证明您正在使用Objective-C语言,可面对property及synthesize却十分头痛,对于初入iphone开发之路。 就拿我自己来说吧,最初学Objective-C时,根本不


作者:angellixf
大家应该都知道@代表“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方法。 
转载自:http://www.cocoachina.com/iphonedev/sdk/2010/0313/628.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 健康证怎么办 在哪办 怎么办健康证去哪里办 公司合同不给我怎么办 孕妇吃了酸梅粉怎么办 婧氏牙膏没客源怎么办 乐视手机耗电快怎么办 乐视手机费电快怎么办 最爱最恨都是你怎么办 耳朵长疱疹很痛怎么办 刚怀孕就有霉菌怎么办 车牌选错了想换怎么办 足癣传染到身上怎么办 金鱼生病了立鳞怎么办 脸上有闭口痘痘怎么办 泰迪得了皮肤癣怎么办 qq截图发不出去怎么办 半夜2点肚子饿怎么办 半夜两三点饿了怎么办 科目三预约不上怎么办 心脏支架又堵了怎么办 车辆验车过期了怎么办 车辆年审过期2天怎么办 违停单子丢了怎么办 沙发弹簧包坏了怎么办 bt种子被和谐了怎么办 苹果手机id密码忘了怎么办 墙漆颜色太深了怎么办 油漆颜色太深了怎么办 墙面漆颜色太深怎么办 古代打仗牙掉了怎么办 乐视电视没声音怎么办 老公疑心病很重怎么办啊 被安装了尿道锁怎么办 狼青小狗腿罗圈怎么办 备孕期间有霉菌怎么办 虫子进皮肤里了怎么办 生完孩子肚子越来越大怎么办 怀孕8个月肚子小怎么办 孕晚期胎儿不长怎么办 肚子上肉特别多怎么办 奶堵了有硬块怎么办