Objective-C 对象的属性是不是不能直接取地址?为什么?

2015-07-27 18:04:21 +08:00
 reking11

@interface Obj : NSObject
@property (assign, nonatomic) int pram;
@end

Obj *obj = [[Obj alloc] init];
int *p = &obj.pram; //这里报错 Address of property expression requested;

6998 次点击
所在节点    问与答
3 条回复
laoyur
2015-07-27 18:10:51 +08:00
回去看书去
xxx.property1当右值用时,调用编译器生成/用户手动指定的get方法
当左值用时(对其赋值),调用编译器生成/用户手动指定的set方法
所以property本质上是get/set方法

@property (assign, nonatomic) int pram;你这样写的话,默认对应的实例变量名为_pram
所以应该这么用:int* p = &obj->_pram,但基本上这么用没有任何卵用啊
loveuqian
2015-07-27 19:07:31 +08:00
取属性的地址干嘛?
hdbean
2015-07-28 09:16:15 +08:00
同问,取属性地址干嘛?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/208703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX