【问题标题】:Assign vs anything etc Viewunload viewload etc分配与任何东西等 Viewunload viewload 等
【发布时间】:2013-01-23 02:51:47
【问题描述】:

我是 Objective-c 的新手。

我有 2 个不相关的问题。

  • 创建实例变量或属性时必须经过哪些流程?比如我一般在interface部分定义变量,然后给它创建一个属性,然后合成,然后在viewUnload部分设置为nil。

即使我为它创建了属性,我是否必须在接口部分中定义变量?何时必须在 viewUnload 部分将变量设置为 nil?

  • 在定义属性时,strong、weak、non-atomic、atomic、assign 等有什么区别?我应该何时强、弱、非原子、原子、分配等?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    创建一个你必须经历的过程是什么 实例变量或属性?

    合成一个属性是声明它的ivar,并定义访问器方法,而不是分配和初始化它。您需要在适当的时间点对其进行初始化,(通常在某些-init* 中的对象实例初始化期间或即将显示视图之前,例如在-viewDidLoad 中)。

    定义时强、弱、非原子、原子、赋值等有什么区别 特性?我应该何时强、弱、非原子、原子、分配等?

    strong、weak、assign 是改变对象实例引用方式的修饰符。请参阅有关自动引用计数的文档。(WikipediaApple's Documents

    非原子和原子是改变访问器合成方式的修饰符。请参阅this声明的属性部分。

    即使我为它创建了属性,我是否必须在接口部分中定义变量?

    没有。至于现在,您不需要这样做,因为最新 SDK 中的编译器会为您完成这些工作。例如,如果您声明了一个属性:@property (strong, nonatomic) NSData *data1;,那么您将免费获得 ivar NSData *_data1,即使您省略了 @synthesize 语句。

    我什么时候必须在 viewUnload 部分将变量设置为 nil?

    没有。顺便说一句,-viewDidUnload 在 iOS 6.0 中已被弃用。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2022-01-10
      • 2018-05-26
      • 2014-10-14
      • 2012-12-30
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多