`
alex09
  • 浏览: 974911 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

objective-c 中retain,assign,copy

阅读更多
"The assign keyword will generate a setter which assigns the value to the instance variable directly, rather than copying or retaining it. This is best for primitive types like NSInteger and CGFloat, or objects you don't directly own, such as delegates."

The reason that you avoid retaining delegates is that you need to avoid a retain loop:

A creates B A sets itself as B's delegate … A is released by its owner

If B had retained A, A wouldn't be released, as B owns A, thus A's dealloc would never get called, causing both A and B to leak.

You shouldn't worry about A going away b/c it owns B and thus gets rid of it in dealloc.
   
分享到:
评论

相关推荐

    objective-c面试大全

    在Objective-C面试中,面试官通常会关注以下几个核心知识点: 1. **对象间的交互**:Objective-C中,对象间的通信主要通过消息传递机制实现,包括代理模式(Delegate)、观察者模式(Observer)、Blocks以及App ...

    retain和copy还有assign的区别

    在Objective-C中,了解`retain`、`copy`和`assign`这三个属性对于管理内存至关重要。这些属性主要用于定义对象属性时,它们决定了如何处理对象的引用。本文将详细介绍这三个属性的概念、应用场景以及它们之间的区别...

    Objective-C Cheat Sheet

    在Objective-C中,类的定义通常分为两部分:头文件和实现文件。头文件以`.h`结尾,用于声明类的接口,包括属性和方法。 ```objective-c #import "AnyHeaderFile.h" @interface ClassName : SuperClass { // 声明...

    ios_assign,retain和copy详解

    在iOS开发中,Objective-C语言提供了@property关键字来声明属性,并且可以在属性声明时指定不同的内存管理行为,主要涉及到assign、retain和copy这三个关键字。为了深入理解这三者的区别,首先需要了解Objective-C的...

    C++教程渥瑞达objective-c视频教程内含有 du盘链接

    Objective-C提供了几种关键字来帮助开发者管理对象的生命周期:`strong`、`weak`、`copy`、`retain`、`assign`等。例如: - `strong`: 对象被强引用,对象生命周期由引用者决定。 - `weak`: 弱引用,当没有强引用时...

    北风网内部版Objective-C培训资料

    Objective-C是一种面向对象的编程语言,它是在C语言的基础上发展起来的,主要用于开发iOS和Mac OS X应用。Objective-C结合了C语言的灵活性与Smalltalk的面向对象特性,使得开发者能够高效地构建复杂的应用程序。 ##...

    objective-c资料

    Objective-C,简称OC,是苹果公司开发的一种面向对象的编程语言,它在iOS和macOS应用开发中扮演着核心角色。这份"Objective-C资料"显然包含了一些关于OC的基础知识,特别是关于属性(properties)和访问器...

    Objective-c 学习 (2).doc

    Objective-C 是苹果开发环境中的主要编程语言,尤其在iOS和macOS应用开发中占据核心地位。在Objective-C中,`property`是面向对象编程中的一个重要概念,它允许开发者声明类的实例变量,并自动生成对应的存取方法...

    Ios retain assign区别

    ### iOS开发中retain与assign的区别 在iOS开发中,Objective-C是主要使用的语言之一,而Objective-C中的属性声明是理解对象交互方式的关键。本文将详细解释`retain`和`assign`的区别,以及其他相关的属性修饰符如`...

    Objective-C基础教程.docx

    - 属性修饰符:`readonly`、`readwrite`、`assign`、`atomic`、`nonatomic`、`copy`、`retain`等。 - 自动合成:使用`@synthesize`自动创建属性对应的实例变量和存取方法。 6. **内存管理**: - **引用计数**:...

    IOS软件工程师笔试题(全选择题)【0-1年经验】.pdf

    12. Objective-C的实例变量的声明和内存管理:在Objective-C中,实例变量默认为assign属性,对于对象类型的变量,应使用retain或copy属性来控制内存。 13. NSDictionary:NSDictionary是一个不可变字典,可以通过...

    举例讲解Objective-C中@property属性的用法

    然而,Objective-C的`@property` 不仅仅涉及访问权限,它还涉及到自动合成(synthesis)和内存管理(例如,`copy`、`retain` 和 `assign`)。 在标题中提到的示例中,我们看到即使在Objective-C中声明了`@public`,...

    Learn Objective‐C

    `@property`用于声明对象的属性,提供自动内存管理(如retain、copy、assign)和访问器方法。 3. **消息传递**:Objective-C的对象通过发送消息来执行操作。消息传递机制是Objective-C的关键特性,它使得代码更加...

    Objective-C Associated Objects 的实现原理.pdf

    在Objective-C中,存在五种关联策略:OBJC_ASSOCIATION_ASSIGN、OBJC_ASSOCIATION_RETAIN_NONATOMIC、OBJC_ASSOCIATION_COPY_NONATOMIC、OBJC_ASSOCIATION_RETAIN和OBJC_ASSOCIATION_COPY。前两个策略和后两个策略的...

    iOS开发中必备的OC知识

    属性可以有多种类型,包括strong, weak, assign, copy, retain等。strong属性意味着持有对象,防止其被释放,而weak属性则不持有对象,仅用于访问。属性能够简化实例变量的get和set方法的声明和使用。 方法(Method...

    ios object-c 面试试题 及答案

    在iOS开发中,Objective-C是主要的编程语言之一,面试中常常会涉及到一系列技术问题,以下是一些关于Objective-C的面试知识点和解答: 1. **main.m中的过程**: `main.m`是iOS应用程序的入口点。在这个文件中,`...

    iOS面试大全.docx

    - `#import`是Objective-C中导入头文件的标准方式,它会确保头文件只被导入一次,避免了重复导入的问题。 - `#include`是C/C++中的导入方式,不处理重复导入。 - `@class`是Objective-C的一个预处理器指令,它...

    阿里p4-p6面试题.pdf

    在Objective-C中,内存管理主要通过引用计数(reference counting)来实现,包括retain, release, 和dealloc三个主要操作。 - retain用于增加对象的引用计数,防止被自动释放;release用于减少对象的引用计数;...

    iosiOS面试宝典

    #### 一、Objective-C中的类继承与接口实现 - **多重继承**: Objective-C不支持类的多重继承。这意味着一个类只能继承自另一个类,但不能同时继承多个父类。 - **接口实现**: 尽管Objective-C不支持多重继承,但它...

Global site tag (gtag.js) - Google Analytics