objective-c - 一个 关于iOS很基础的关于变量的问题
伊谢尔伦
伊谢尔伦 2017-04-17 15:53:50
[iOS讨论组]
@interface aaaa (){
    NSString *_name;
    UIButton *_btn;
}

@property (nonatomic,copy)NSString *name;
@property (nonatomic,strong)UIButton *btn;
@end

这两种方式都在controller中 既然都可以任意在哪儿赋值,任意使用,我想问这两种方式在这种情况下有什么区别?在这样的情况下哪种又比较好?

求解答 一直以来的疑问

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
PHP中文网

成员变量主要是适用于iOS5之前的开发,需要程序员手动进行内存管理。iOS5之后(包括iOS5)引入了ARC(Automatic Reference Counting)同过在property中使用strong,weak等标记自动对内存进行管理。也就是说进行iOS5及以后系统版本的开发,可以放心的使用property,而无需对其进行手动的内存管理。property会自动生成setter,getter方法,方便用点语法直接用。

伊谢尔伦

http://blog.devtang.com/blog/2015/03/15/ios-dev-controversy-1/

怪我咯

'@property' 至少可以加修饰符啊

ringa_lee

首先你要知道什么是Class
Class中只有 数据(成员变量)行为(方法)

其次你要知道什么是属性
属性 就是针对 某个数据 提供一组 setter` 和 getter

比如 name属性
首先 会 建立一个成员变量 NSString* _name

其次 会 建立 -(NSString*)name; 这样一个getter方法
和一个 - (void) setName(NSstring*)newName; setter方法
两个方法

这就是属性
至于

xxx.name = @"freewolf";
//实际上就是 xxx.setName(@"freewolf");

当然 这之间还有 @synthesize的事儿 就是如何把属性和数据成员连起来 也就是 name属性对应修改_name成员变量

如果你只建立一个属性name
那么编译器会自动帮你建立 _name成员和 settname和getname方法 并且自动synthesize

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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