reking11
V2EX  ›  问与答

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

  •  
  •   reking11 · Jul 27, 2015 · 7437 views
    This topic created in 4031 days ago, the information mentioned may be changed or developed.

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

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

    3 replies    2015-07-28 09:16:15 +08:00
    laoyur
        1
    laoyur  
       Jul 27, 2015   ❤️ 2
    回去看书去
    xxx.property1当右值用时,调用编译器生成/用户手动指定的get方法
    当左值用时(对其赋值),调用编译器生成/用户手动指定的set方法
    所以property本质上是get/set方法

    @property (assign, nonatomic) int pram;你这样写的话,默认对应的实例变量名为_pram
    所以应该这么用:int* p = &obj->_pram,但基本上这么用没有任何卵用啊
    loveuqian
        2
    loveuqian  
       Jul 27, 2015 via iPhone
    取属性的地址干嘛?
    hdbean
        3
    hdbean  
       Jul 28, 2015
    同问,取属性地址干嘛?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3744 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 171ms · UTC 05:11 · PVG 13:11 · LAX 22:11 · JFK 01:11
    ♥ Do have faith in what you're doing.