`
zcw_java
  • 浏览: 303809 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

addSubview对于引用计数操作

 
阅读更多
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdetifier = @"blogCellIdentifier";
    UITableViewCell *cell = [m_tableViewDownList dequeueReusableCellWithIdentifier:cellIdetifier];
    if(cell==nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdetifier] autorelease];
        UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"asd"]];
        [cell setBackgroundView:image];
        [image release];
        UIImageView *imgLeft = [[UIImageView alloc] initWithFrame:CGRect_Cell_LeftImg];
        imgLeft.tag = 201;
       [color=red] //这里addsubview为imgLeft引用计数+1,此时imgLeft为2[/color]
        [cell addSubview:imgLeft];
        [imgLeft release];
        
        NSString *path1 = [[NSBundle mainBundle] pathForResource:kTableViewCellRightImg ofType:@"png"];
        UIImageView *imgRight = [[UIImageView alloc] initWithFrame:CGRect_Cell_Rightimg];
        imgRight.image = [UIImage imageWithContentsOfFile:path1];
        imgRight.tag = 202;
        [cell addSubview:imgRight];
        [imgRight release];
        
    }
    NSString *path = [[NSBundle mainBundle] pathForResource:[m_downListDataSource objectAtIndex:indexPath.row] ofType:@"png"];
    UIImageView * vv = (UIImageView*)[cell viewWithTag:201];
    vv.image = [UIImage imageWithContentsOfFile:path];
    return cell;
}


在我们调用这个函数(比如是[self.view addSubview:tableview])之后,tableview是否应该release?
这里要分情况,如果tableview是一个类的属性,在类对象释放的时候会自动释放,那么就不必再次释放。反之,如果他只是一个临时的对象那么就应该在加入之后进行释放。这也是符合上面所说的规则的。

self.view是tableview的管理者,他就应该在加入tableview的时候对他进行retain,在本身释放的时候release。而事实上,ios也正是这么做的。
分享到:
评论

相关推荐

    IOS7下可AddSubView的AlertView

    在iOS开发中,`UIAlertView`是苹果提供的一种用于显示警告信息或者询问用户操作的原生控件。然而,在iOS7及以后的版本中,`UIAlertView`的一些行为发生了变化,特别是不允许开发者直接添加子视图(AddSubview)。这...

    归档操作,源码

    归档操作,源码,详细标注,值得拥有,, CustomImgView *customView = [[CustomImgView alloc]initWithFrame:CGRectMake(50, 100, 200, 200)]; customView.backgroundColor = [UIColor redColor]; //需要做的...

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

    - **ARC简介**:ARC(Automatic Reference Counting),即自动引用计数,是自iOS 5开始引入的一种内存管理机制。ARC的主要目的是自动化管理Objective-C代码中的`retain`/`release`生命周期,从而降低开发者在内存...

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

    通过`retain`和`release`方法来增加和减少对象的引用计数,当引用计数为0时,对象会被自动释放。 #### 六、其他重要概念 - **协议**:协议定义了一组方法签名,任何遵循该协议的类必须实现这些方法。这有助于提高...

    ios执行刷新操作demo

    tableView.addSubview(refreshControl) ``` 其中`refreshData`是处理刷新的函数。 2. **Reload Data**: 当数据源改变时,可以通过调用`reloadData()`方法来刷新整个表格或集合视图。这会重新绘制所有的Cell,确保...

    IOS计数器代码

    `assign`表示这是一个基本类型,不需要引用计数。`increment`和`decrement`方法分别用于增加和减少计数值。 接下来,我们需要实现`Counter`类的方法: ```objc @implementation Counter - (void)increment { ...

    ios demo,单击按钮,延时某个操作,并且完成了动态创建弹出式菜单功能

    3. 显示菜单:使用`addSubview`将自定义视图添加到当前视图控制器的视图上,可能需要调整其frame以适应屏幕边缘。 4. 处理菜单选择:为每个菜单项按钮设置ACTION,处理用户的点击事件。 5. 隐藏菜单:当用户选择一个...

    swift Demo

    - **内存管理**:Swift使用自动引用计数(ARC)和弱引用,确保有效管理和释放内存。 2. **iOS开发基础**: - **UIKit**:iOS应用主要基于UIKit框架构建,它提供了大量的UI控件和工具,如UILabel、UIButton、...

    自写iOS类:UIRadioBox

    由于我们使用了ARC,编译器会自动处理对象的引用计数,确保在适当的时候释放内存。但是,仍需注意避免循环引用,尤其是在设置代理或者使用强引用时。 6. **扩展与优化** 为了更好地适应项目需求,我们可以考虑...

    2018iOS一份高级面试题

    1. **ARC**:自动引用计数,由编译器自动管理对象的引用计数。 2. **手动管理**:程序员需要显式地调用`retain`和`release`方法来管理对象的生命周期。 3. **优点**:ARC 减少了内存泄漏和过早释放的风险,提高了...

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

    ARC(Automatic Reference Counting,自动引用计数)是随着iOS 5一同推出的,它有效地避免了由于忘记释放内存而导致的常见内存泄漏问题。ARC自动处理`retain`和`release`的过程,因此开发者无需手动介入。 例如,...

    项目中的问题

    自动引用计数(Automatic Reference Counting, ARC)和手动引用计数(Manual Reference Counting, MRC)之间的不兼容可能导致内存管理问题。 **解决建议:** - 如果项目中使用了ARC,而部分代码片段使用MRC,则需要明确...

    CS193P_5_Views

    例如,可以使用方法addSubview:来添加子视图,使用removeFromSuperview方法来移除子视图。另外,还有一系列的UIView方法可以用来手动操纵视图层级,如insertSubview:atIndex:可以在指定索引处插入视图,...

    iOS Javascript与Objective-C互操作

    [self.view addSubview:webView]; } ``` 接下来,为了实现JavaScript与Objective-C的通信,我们需要使用WKWebView的`WKUserContentController`。这是一个管理用户脚本的对象,可以监听JavaScript的事件并将其转发...

    TableView的各种操作

    view.addSubview(tableView) ``` 在Swift中,UITableViewDataSource和UITableViewDelegate是两个关键协议,它们定义了表格视图的行为和内容。你需要实现这些协议的方法以提供单元格的数据和交互逻辑。例如: ```...

    SeekPreview:将SeekPreview附加到seekBar上以显示seek操作的小预览图像

    将SeekPreview附加到seekBar,以显示seek操作的小预览图像。 用法 您只需要创建一个SeekPreview对象,将其传递给SeekPreviewDelegate以提供预加载的预览图像,然后将预览附加到与该预览属于同一视图层次结构的...

    iOS实现手势解锁操作

    iOS手势解锁是一种便捷的用户身份验证方式,它允许用户通过在屏幕上画出特定的图案来解锁设备或执行某些操作。这种功能常见于许多智能手机和平板电脑,提供了直观且个性化的安全保护。在iOS开发中,我们可以利用手势...

    一个自定义的导航栏的扩展,可直接引用

    一个自定义的导航栏,只需要在使用的类中引入头文件就可以直接使用 但是要在AppDelegate中将nav设置为rootView ... [self.window addSubview:self.navigation.view]; [self.window makeKeyAndVisible];

    第三节 iPhone应用程序的启动过程.docx

    在`applicationDidFinishLaunching:`方法中,开发者可以进行初始化操作,例如将视图控制器的视图添加到窗口,通过`[window addSubview:viewController.view]`,并使窗口成为关键窗口,以便显示,`[window ...

    iOS 各种UI控件大全

    按钮是用户与应用交互的基础元素,用于触发特定的操作或事件。UIButton有多种样式,如系统默认的圆形、矩形或定制样式。创建一个简单的按钮,你可以这样做: ```swift let button = UIButton(type: .system) button...

Global site tag (gtag.js) - Google Analytics