zoukankan      html  css  js  c++  java
  • difference between instance variable and property

    @interface MyClass : NSObject {
        NSString *name;
        NSArray *items;
    
        Something *something;
    
        IBOutlet NSTextField *myTextField;
    }
    
    @property (nonatomic, retain) NSString *name;
    @property (nonatomic, retain) NSArray *items;
    

      

    in the iPhone world, there's no garbage collector available. You'll have to carefully manage memory with reference counting. With that in mind, consider the difference between:

    name =@"Test";

    and

    self.name =@"Test";// which is equivalent to:[self setName:@"Test"];

    If you directly set the instance variable, without prior consideration, you'll lose the reference to the previous value and you can't adjust its retain count (you should have released it manually). If you access it through a property, it'll be handled automatically for you, along with incrementing the retain count of the newly assigned object.

    The fundamental concept is not iPhone specific but it becomes crucial in an environment without the garbage collector.

    Declaring ivar via just declaring a property for it is a new language feature available starting objc 2.0

    In "Run-time differences" section of "Objective-c programming language" reference stated:

    For @synthesize to work in the legacy runtime, you must either provide an instance variable with the same name and compatible type of the property or specify another existing instance variable in the @synthesize statement. With the modern runtime, if you do not provide an instance variable, the compiler adds one (_propertyName) for you.

  • 相关阅读:
    从零开始的HTML5之旅(三)
    2020年3月12日
    2020年3月14日
    错误There is no Action mapped for namespace / and action name—Struts2
    2014.05.06我在这里起航
    Test For Windows Live Writer
    点亮灯泡——JS实现
    windows phone中解决html乱码问题
    .net处理多线程
    Windows Store App之数据存储
  • 原文地址:https://www.cnblogs.com/fengjian/p/3309406.html
Copyright © 2011-2022 走看看