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)。上述的做法也是为了符合这一准则。
分享到:
相关推荐
如果你想在不使用Interface Builder的情况下动态地在屏幕上显示图片,可以创建一个`UIImageView`对象。例如: ```objc CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f); UIImageView *myImage = ...
- `UIView` 是 iOS 开发中的基本视图容器类,它定义了一个可以绘制、显示内容以及处理用户交互的基本框架。所有的 UI 控件(如按钮、标签等)都是 UIView 的子类或者子类的子类。 - 在 iOS 应用程序中,几乎所有的...
一个简单的 clock 框架 用法简介 ClockView *clockView = [[ClockView alloc] initWithFrame:CGRectMake(0, 200, 200, 200)]; [self.view addSubview:clockView]; [clockView start]; ........ [clockView...
- **实现原理**:ARC通过编译器在编译阶段插入必要的`retain`、`release`等方法调用来确保对象的引用计数正确,这样开发者就无需手动添加这些调用。 - **示例**: ```objective-c // 旧方式 UIView *view = [...
接下来,我们看看如何使用代码来实现一个UISlider,并让它在被拖动时更新界面上的一个标签数值。 实现UISlider的基本方法包括以下几个步骤: 1. 创建UISlider实例:使用alloc和init方法来初始化一个UISlider对象。...
在 iOS 开发过程中,`UINavigationController` 是一个非常重要的组件,它能够帮助我们实现页面间的导航和管理。本文将通过一系列的示例来详细介绍如何将 `UINavigationController` 添加到 `UIWindow` 中,并探讨一些...
当一个对象被发送`autorelease`消息后,它会被放入最近的自动释放池中。这种机制减少了程序员手动管理内存的工作量,并且能够有效地回收不再使用的对象。 **使用方法**: 1. 创建对象时使用`[object autorelease]`...
在示例代码中,我们创建了一个名为`TouchView`的自定义UIView子类,并实现了`touchesBegan:`方法,用于在控制台上打印触摸点的坐标。`[touch locationInView:self]`这行代码获取了触摸点相对于`TouchView`自身的坐标...
TK键盘 该库提供了原生 iOS 键盘的替代方案,支持自定义键盘的外观和感觉。... [ self .view addSubview: textField]; [textField release ]; 这将显示一个整数键盘,就像使用系统键盘一样简单。 支持键盘类
在上面的例子中,`MyClass`继承自`NSObject`,拥有一个名为`name`的属性,并定义了一个`sayHello`方法。`@property`关键字用于声明属性,`@synthesize`则自动生成getter和setter方法。 OC的另一个核心特性是消息...
开发过程中常见的一个错误是没有给`UITableViewCells`、`UICollectionViewCells`甚至`UITableViewHeaderFooterViews`设置正确的`reuseIdentifier`。为了性能最优化,tableView使用`tableView:cellForRowAtIndexPath...
具体实现细节没有给出,但从代码片段来看,它首先创建了一个UIImageView对象,并设置了其图像源,然后将其添加到视图层级中。 以上是基于给定的文件信息整理出来的知识点,涵盖了从基础的字符串处理到更高级的UI...
在这里,`Student`类继承自`Person`类,并新增了一个属性`school`和一个方法`study`。 #### 四、iOS开发 ##### 4.1 UIKit框架 UIKit是iOS应用程序开发的核心框架之一,提供了大量的用户界面组件和交互机制。例如...
当从一个视图控制器推送到另一个视图控制器时,可以在父视图控制器中自定义返回按钮的文本。实现方式如下: ```objective-c UIBarButtonItem *backbutton = [[UIBarButtonItem alloc] init]; backbutton.title = @...
- 添加一个自定义的样式表类 `SetTextTestStyleSheet.h`,并在 `viewDidLoad` 方法中使用它。 - 创建一个 `TTStyledTextLabel` 实例,并设置其样式和文本内容。 - 将标签添加到视图上。 ```objc - (void)...
定义一个类需要使用`@interface`关键字,其中包含属性(properties)和方法(methods)。属性定义了对象的状态,方法定义了对象的行为。类的实现则通过`@implementation`关键字完成。 ```objc @interface MyClass :...
Three20是一个功能强大的iOS UI框架,它提供了一系列丰富的用户界面组件和工具,能够帮助开发者快速构建高质量的应用程序。Three20的设计理念是模块化和可扩展性,这使得它非常灵活且易于集成到现有的项目中。Three...
在Demo类的“GridView.m”里面有多处注释掉的代码,是为UIButton添加title的代码,打开后,显示的是该节点(UIButton)所处的行与列的索引值,方便用于别人研究实现逻辑用的。 1.将GridView和HSCButton类对应的.h和...