`
flycomos.lee
  • 浏览: 280487 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为什么要在addsubview:一个view对象后,release它

    博客分类:
  • ios
 
阅读更多

IMGView *imgView = [[IMGView alloc] initWithFrame:CGRectMake(10, 0, 300, 300)];
[self.view addSubview:imgView];
[imgView release];

 

为什么imgView要release呢?可能很多人跟我一样,之前不是很清楚。 我们逐行分析一下

第一行,alloc一次,imgView对象retainCount为1,
第二行,addSubview一次,此方法会把你传过去的对象 retain一次,那么此时它的retainCount为2。self.view变为它的第二个待有者。参考:The receiver retains view. If you use removeFromSuperview to remove view from the view hierarchy, view is released.
第三行,调用release方法,此处释放对imgView的所有权,retainCount减1。

到语言句尾imgView的所有者只剩下self.view,并且它的retainCount仅为1。内存管理第一铁则,谁retain(alloc,copy)谁release(autorelease)。上述的做法也是为了符合这一准则。

分享到:
评论

相关推荐

    iPhone SDK Examples

    如果你想在不使用Interface Builder的情况下动态地在屏幕上显示图片,可以创建一个`UIImageView`对象。例如: ```objc CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f); UIImageView *myImage = ...

    UI课件第一讲

    - `UIView` 是 iOS 开发中的基本视图容器类,它定义了一个可以绘制、显示内容以及处理用户交互的基本框架。所有的 UI 控件(如按钮、标签等)都是 UIView 的子类或者子类的子类。 - 在 iOS 应用程序中,几乎所有的...

    ios-Clock for iOS (秒针两种旋转样式).zip

    一个简单的 clock 框架 用法简介 ClockView *clockView = [[ClockView alloc] initWithFrame:CGRectMake(0, 200, 200, 200)]; [self.view addSubview:clockView]; [clockView start]; ........ [clockView...

    25条iOS代码编写技巧与建议

    - **实现原理**:ARC通过编译器在编译阶段插入必要的`retain`、`release`等方法调用来确保对象的引用计数正确,这样开发者就无需手动添加这些调用。 - **示例**: ```objective-c // 旧方式 UIView *view = [...

    UISlider的用途的方法

    接下来,我们看看如何使用代码来实现一个UISlider,并让它在被拖动时更新界面上的一个标签数值。 实现UISlider的基本方法包括以下几个步骤: 1. 创建UISlider实例:使用alloc和init方法来初始化一个UISlider对象。...

    add a navigationcontroller to window帮助文档

    在 iOS 开发过程中,`UINavigationController` 是一个非常重要的组件,它能够帮助我们实现页面间的导航和管理。本文将通过一系列的示例来详细介绍如何将 `UINavigationController` 添加到 `UIWindow` 中,并探讨一些...

    2018iOS一份高级面试题

    当一个对象被发送`autorelease`消息后,它会被放入最近的自动释放池中。这种机制减少了程序员手动管理内存的工作量,并且能够有效地回收不再使用的对象。 **使用方法**: 1. 创建对象时使用`[object autorelease]`...

    第八节 检测屏幕触摸事件.docx

    在示例代码中,我们创建了一个名为`TouchView`的自定义UIView子类,并实现了`touchesBegan:`方法,用于在控制台上打印触摸点的坐标。`[touch locationInView:self]`这行代码获取了触摸点相对于`TouchView`自身的坐标...

    TKKeyBoard:自定义键盘

    TK键盘 该库提供了原生 iOS 键盘的替代方案,支持自定义键盘的外观和感觉。... [ self .view addSubview: textField]; [textField release ]; 这将显示一个整数键盘,就像使用系统键盘一样简单。 支持键盘类

    IOS开发中的OC

    在上面的例子中,`MyClass`继承自`NSObject`,拥有一个名为`name`的属性,并定义了一个`sayHello`方法。`@property`关键字用于声明属性,`@synthesize`则自动生成getter和setter方法。 OC的另一个核心特性是消息...

    性能优化的25个建议和技巧

    开发过程中常见的一个错误是没有给`UITableViewCells`、`UICollectionViewCells`甚至`UITableViewHeaderFooterViews`设置正确的`reuseIdentifier`。为了性能最优化,tableView使用`tableView:cellForRowAtIndexPath...

    IOS常用文档

    具体实现细节没有给出,但从代码片段来看,它首先创建了一个UIImageView对象,并设置了其图像源,然后将其添加到视图层级中。 以上是基于给定的文件信息整理出来的知识点,涵盖了从基础的字符串处理到更高级的UI...

    是一个较为详细的Objective-C语言教程.docx

    在这里,`Student`类继承自`Person`类,并新增了一个属性`school`和一个方法`study`。 #### 四、iOS开发 ##### 4.1 UIKit框架 UIKit是iOS应用程序开发的核心框架之一,提供了大量的用户界面组件和交互机制。例如...

    iphone开发常用代码

    当从一个视图控制器推送到另一个视图控制器时,可以在父视图控制器中自定义返回按钮的文本。实现方式如下: ```objective-c UIBarButtonItem *backbutton = [[UIBarButtonItem alloc] init]; backbutton.title = @...

    Three 20 的配置

    - 添加一个自定义的样式表类 `SetTextTestStyleSheet.h`,并在 `viewDidLoad` 方法中使用它。 - 创建一个 `TTStyledTextLabel` 实例,并设置其样式和文本内容。 - 将标签添加到视图上。 ```objc - (void)...

    Object-C语言入门教程&代码示例 .zip

    定义一个类需要使用`@interface`关键字,其中包含属性(properties)和方法(methods)。属性定义了对象的状态,方法定义了对象的行为。类的实现则通过`@implementation`关键字完成。 ```objc @interface MyClass :...

    Three20使用图文教程

    Three20是一个功能强大的iOS UI框架,它提供了一系列丰富的用户界面组件和工具,能够帮助开发者快速构建高质量的应用程序。Three20的设计理念是模块化和可扩展性,这使得它非常灵活且易于集成到现有的项目中。Three...

    一款不错的魔方游戏案例

    在Demo类的“GridView.m”里面有多处注释掉的代码,是为UIButton添加title的代码,打开后,显示的是该节点(UIButton)所处的行与列的索引值,方便用于别人研究实现逻辑用的。 1.将GridView和HSCButton类对应的.h和...

Global site tag (gtag.js) - Google Analytics