当前位置:  编程技术>移动开发
本页文章导读:
    ▪水准放置的tableview        水平放置的tableview // //  BMViewController.m //  UITableViewTest // //  Created by wangbaoxiang on 13-4-23. //  Copyright (c) 2013年 apple. All rights reserved. //   #import "BMViewController.h"   @interfaceBMViewController ()   @end  .........
    ▪ 四 7.OC13-内存管理4-autorelease        4 7.OC13-内存管理4-autorelease 4 7.OC13-内存管理4-autorelease     自动释放池(autorelease  pool) 1)、自动释放池是OC里面的一种内存自动回收机制,一般可以将一些临时变量添加到自动释放池中,.........
    ▪ 四 5.OC11-@class关键字       4 5.OC11-@class关键字 4 5.OC11-@class关键字   @class 通常引用一个类有两种方法:(1)一种是通过#import方式引入; (2)另一个是通过@class引入   两种方式的区别: 1、#import方式会包含被引用类.........

[1]水准放置的tableview
    来源: 互联网  发布时间: 2014-02-18
水平放置的tableview

//

//  BMViewController.m

//  UITableViewTest

//

//  Created by wangbaoxiang on 13-4-23.

//  Copyright (c) 2013年 apple. All rights reserved.

//

 

#import "BMViewController.h"

 

@interfaceBMViewController ()

 

@end

 

@implementation BMViewController

 

- (void)viewDidLoad

{

    [superviewDidLoad];

    UITableView *table  = [[UITableView alloc] initWithFrame:CGRectMake(0, 60, 60, 480)];

    table.backgroundColor = [UIColorwhiteColor];

    [table.layersetAnchorPoint:CGPointMake(0.0, 0.0)];

    table.transform = CGAffineTransformMakeRotation(M_PI/-2);

    table.showsVerticalScrollIndicator = NO;

    table.frame = CGRectMake(0, 60, 320, 60);

    table.rowHeight = 60.0;

    NSLog(@"%f,%f,%f,%f",table.frame.origin.x,table.frame.origin.y,table.frame.size.width,table.frame.size.height);

    table.delegate = self;

    table.dataSource = self;

    [self.view addSubview:table];

    [table release];

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return 16;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefault

                                       reuseIdentifier:CellIdentifier] autorelease];

        cell.selectionStyle = UITableViewCellSelectionStyleGray;

        cell.textLabel.textAlignment = NSTextAlignmentCenter;

        cell.textLabel.backgroundColor = [UIColorredColor];

        cell.textLabel.transform = CGAffineTransformMakeRotation(M_PI/2);

    }

    cell.textLabel.text = [NSString stringWithFormat:@"%d",indexPath.row];

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    NSLog(@"--------->%d",indexPath.row);

}

- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

 

@end


    
[2] 四 7.OC13-内存管理4-autorelease
    来源: 互联网  发布时间: 2014-02-18
4 7.OC13-内存管理4-autorelease
4 7.OC13-内存管理4-autorelease

 

 

自动释放池(autorelease  pool)

1)、自动释放池是OC里面的一种内存自动回收机制,一般可以将一些临时变量添加到自动释放池中,统一回收释放。

2)、当自动释放池销毁时,池里面的所有对象都会调用一次release方法。

 

autorelease

1)、OC对象只需要发送一条autorelease消息,就会把这个对象添加到最近的自动释放池中(栈顶的释放池)

2)、autorelease实际上只是把对release的调用延迟了,对于每一次autorelease,系统只是把该对象放入了当前的autorelease  pool中,当该pool被释放时,该pool中的所有对象会被调用release

 

使用autorelease

以前

Book  *book = [[Book  alloc] init];

[student  setBook:book];

[book  release];

 

现在:

Book  *book = [ [[Book  alloc]  init]   autorelease];

[student  setBook:book];

//不要在调用[book  release];

 

 

autorelease  pool疑问

1)、在iphone项目中,main()中有一个默认的Autorelease  Pool,程序开始时创建,程序退时销毁,按照对Autorelease的理解,岂不是Autorelease  Pool里的所有对象在程序退出时才release,这样跟内存泄露有什么区别?

2)、对于每一个Runloop,系统会隐式创建一个Autorelease  pool,并且把创建好的pool放在栈顶,所有的pool会构成一个栈式结构。在每一个Runloop结束时,当前栈顶的pool会被销毁,这样这个pool里的每个对象会执行release操作。

 

 

 

 

例一:

main.m

 //

//  main.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "Student.h"

 

 

int main(int argc, const char * argv[])

{

    //@@autoreleasepool代表创建一个自动的释放池

    @autoreleasepool {

        Student *stu = [[[Student alloc] init] autorelease];

        

        Student *stu1 = [[[Student alloc] init] autorelease];

    

        //这个str是自动释放的,不需要释放

        Student *stu2 = [Student student];

        

        //这个str是自动释放的,不需要释放

        NSString *str = [NSString stringWithFormat:@"age is %i", 10];

    }

    return 0;

}

 

 

Student.h

 //

//  Student.h

//  OC10-内存管理2-set方法的内存管理

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

@interface Student : NSObject

 

+ (id)student;

 

@end

 

 

Student.m

 //

//  Student.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import "Student.h"

 

@implementation Student

 

- (void)dealloc{

    NSLog(@"%@被销毁", self);

    [super dealloc];

}

 

+ (id)student{

    Student *stu = [[[Student alloc] init] autorelease];

}

 

@end

 

 


    
[3] 四 5.OC11-@class关键字
    来源: 互联网  发布时间: 2014-02-18
4 5.OC11-@class关键字

4 5.OC11-@class关键字

 

@class

通常引用一个类有两种方法:(1)一种是通过#import方式引入; (2)另一个是通过@class引入

 

两种方式的区别:

1、#import方式会包含被引用类的所有信息,包括被引用类的变量和方法:@class方式只是告诉编译器在A.h文件中B * b类的声明,具体这个类里有什么信息,这里不需要知道,等实现文件中真正要用到时,才会真正查看B类信息。

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3