objective-c - OC 直接使用@property就能定义属性了吗?
ringa_lee
ringa_lee 2017-04-24 09:14:09
[iOS讨论组]
#import <Foundation/Foundation.h>

@interface Person : NSObject


@property  NSString * name;


@end

这样就直接能使用p.name了。
好像不需要如下定义:

#import <Foundation/Foundation.h>

@interface Person : NSObject{
NSString* _name;

}


@property  NSString * name;


@end

这两种方式有啥区别呢?

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
天蓬老师

我的经验来说,建议是全部用property定义名字,这样能分清楚变量内存操作方式(多线程实在太少,可以忽略)。并且,对于我来说,这是更容易辨清全局变量的方法之一,在m文件中直接使用_name,可以快速理解这是全局变量。我认为,使用property来做全局变量是个非常好的习惯。另外,@freewolf这里讲到的synthesize其实可以省略。这里用一个简单的setter来举例。

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic,retain) NSString * name;

@end
#import "Person.h"

@implementation Person
//下一步可以省略
@synthesize name = _name;

-(void) setName:(NSString *)name
{
    name = _name;
}

@end
PHP中文网

@property  NSString * name;
// 这个等于下面的(编译器会自动帮你处理)


//.h文件
{
    NSString *_name;
}
// (线程处理方式, 内存操作方式)
@property(atomic, copy)  NSString * name;

// .m文件
// 属性名对应的成员变量是
@synthesize _name = name;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号