iOS-应用管理 用cell实现,前面那个用xib实现

//
//  MJApp.h
//  预习-03-app管理
//
//  Created by MJ Lee on 14-4-3.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface MJApp : NSObject
/**
 图标
 */
@property (copy, nonatomic) NSString *icon;
/**
 名称
 */
@property (copy, nonatomic) NSString *name;
/**
 大小
 */
@property (copy, nonatomic) NSString *size;
/**
 下载量
 */
@property (copy, nonatomic) NSString *download;

@property (assign, nonatomic, getter = isDownloaded) BOOL downloaded;

+ (instancetype)appWithDict:(NSDictionary *)dict;
- (instancetype)initWithDict:(NSDictionary *)dict;
@end

//
//  MJApp.m
//  预习-03-app管理
//
//  Created by MJ Lee on 14-4-3.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "MJApp.h"

@implementation MJApp
+ (instancetype)appWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}

- (instancetype)initWithDict:(NSDictionary *)dict
{
    if (self = [super init]) {
        [self setValuesForKeysWithDictionary:dict];
    }
    return self;
}
@end
//
//  CZAppsTableViewCell.h
//  应用程序下载
//
//  Created by YaguangZhu on 15/9/6.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import <UIKit/UIKit.h>
@class MJApp;
@interface CZAppsTableViewCell : UITableViewCell

@property (nonatomic,strong)MJApp *apps;
+ (instancetype)appsTableviewCellwithTableview:(UITableView *)tableview;
@end

//
//  CZAppsTableViewCell.m
//  应用程序下载
//
//  Created by YaguangZhu on 15/9/6.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "CZAppsTableViewCell.h"
#import "MJApp.h"
@interface CZAppsTableViewCell()
@property (weak, nonatomic) IBOutlet UIView *imgView;

@property (weak, nonatomic) IBOutlet UILabel *nameLbl;

@property (weak, nonatomic) IBOutlet UILabel *introLbl;
@property (weak, nonatomic) IBOutlet UIButton *downloadBtn;

- (IBAction)downloadClick:(id)sender;

@end
@implementation CZAppsTableViewCell

+ (instancetype)appsTableviewCellwithTableview:(UITableView *)tableview
{
    return [tableview dequeueReusableCellWithIdentifier:@"apps"];
}

- (void)setApps:(MJApp *)apps
{
    _apps = apps;
    self.nameLbl.text = apps.name;

    self.imageView.image = [UIImage imageNamed:apps.icon];
    self.introLbl.text = [NSString stringWithFormat:@"%@|%@",apps.size,apps.download];

}
- (void)awakeFromNib {
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

- (IBAction)downloadClick:(id)sender {
    UIButton *btn = (UIButton *)sender;
    btn.enabled = NO;

    self.apps.downloaded = YES;
}
@end
//
//  ViewController.h
//  应用程序下载
//
//  Created by YaguangZhu on 15/9/6.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UITableViewController

@end

//
//  ViewController.m
//  应用程序下载
//
//  Created by YaguangZhu on 15/9/6.
//  Copyright (c) 2015年 YaguangZhu. All rights reserved.
//

#import "ViewController.h"
#import "MJApp.h"
#import "CZAppsTableViewCell.h"

@interface ViewController ()
@property (strong, nonatomic) NSArray *apps;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

- (NSArray *)apps
{
    if (_apps == nil) {
        NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"apps_full.plist" ofType:nil]];

        NSMutableArray *appArray = [NSMutableArray array];
        for (NSDictionary *dict in dictArray) {
            MJApp *app = [MJApp appWithDict:dict];
            [appArray addObject:app];
        }
        _apps = appArray;
    }
    return _apps;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.apps.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CZAppsTableViewCell *cell = [CZAppsTableViewCell appsTableviewCellwithTableview:tableView];

    MJApp *model = self.apps[indexPath.row];

    cell.apps = model;
    //cell.delegate = self;
    //cell.app = self.apps[indexPath.row];
    return cell;
}

//- (void)appCellDidClickedDownloadBtn:(MJAppCell *)cell
//{
//    // 1.取出模型
//    MJApp *app = cell.app;
//
//    // 2.添加标签
//    UILabel *label = [[UILabel alloc] init];
//    label.text = [NSString stringWithFormat:@"成功下载%@", app.name];
//    label.font = [UIFont systemFontOfSize:12];
//    label.textAlignment = NSTextAlignmentCenter;
//    label.textColor = [UIColor whiteColor];
//    label.backgroundColor = [UIColor blackColor];
//    label.frame = CGRectMake(0, 0, 150, 25);
//    label.center = CGPointMake(160, 240);
//    label.alpha = 0.0;
//    label.layer.cornerRadius = 5;
//    label.clipsToBounds = YES;
//    [self.view addSubview:label];
//
//    // 3.动画
//    [UIView animateWithDuration:0.5 animations:^{
//        label.alpha = 0.5;
//    } completion:^(BOOL finished) {
//        [UIView animateWithDuration:0.5 delay:0.5 options:UIViewAnimationOptionCurveLinear animations:^{
//            label.alpha = 0.0;
//        } completion:^(BOOL finished) {
//            [label removeFromSuperview];
//        }];
//    }];
//}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
时间: 2024-10-19 20:20:21

iOS-应用管理 用cell实现,前面那个用xib实现的相关文章

IOS内存管理

原文链接:http://blog.csdn.net/weiqubo/article/details/7376189 1.  内总管理原则(引用计数)    IOS的对象都继承于NSObject,   该对象有一个方法:retainCount ,内存引用计数. 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样.       (一般情况下: 后面会讨论例外情况)    alloc      对象分配后引用计数为1    retain    对象的引用计数+1

iOS内存管理(一)

最近有时间,正好把iOS相关的基础知识好好的梳理了一下,记录一下内存相关方面的知识. 在理解内存管理之前我觉得先对堆区和栈区有一定的了解是非常有必要的. 栈区:就是由编译器自动管理内存分配,释放过程的区域,存放函数的参数值,局部变量等.栈是内存中一块连续的区域,它的大小是确定的. 堆区:需要我们来动态的分配,释放,也就是我们内存管理的主角. 我们通过一个简单的例子来看看. NSString *string = [NSString alloc] init]; 我们声明了一个NSString类型的变

iOS 在TableView的Cell之间设置空白间隔空间

1.设置section的数目,即是你有多少个cell - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; // in your case, there are 3 cells } 2.对于每个section返回一个cell - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)secti

谈谈ios内存管理--持续更新

本文主要谈谈ios内存管理的发展脉络,不足之处,还请指教,相互学习交流.做ios开发,永远无法避开内存管理,无论我们是否有意识去考虑这个事情,但是只要我们写了OC程序,那么就与内存管理有关. 一.内存管理是做什么的? 二.内存管理方式一:MRC (一)引用计数器 (二)原则 (三)alloc.new.copy.mutableCopy.retain.release.dealloc alloc内部实现 引用计数表 (四)autorelease 三.内存管理方式二:ARC (一)__strong (二

IOS 内存管理

一.前言 对于大多数从C++或者JAVA转过来学习Object-C(以下简称OC)的人来说,OC这门语言看起来非常奇怪,用起来也有点麻烦. OC没有像JAVA一样的垃圾回收机制,也就是说,OC编程需要程序员手动去管理内存.这就是为什么它烦的原因,苹果却一直推崇开发者在有限硬件资源内写出最优化的代码,使用CPU最少,占用内存最小. 二.基本原理 对象的创建: OC在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针,因此出来基本类型以外,我们在OC中基本上都在使用指针. ClassA  *

iOS内存管理个人总结

一.变量,本质代表一段可以操作的内存,她使用方式无非就是内存符号化+数据类型 1.保存变量有三个区域: 1>静态存储区 2>stack 3>heap 2.变量又根据声明的位置有两种称呼: 1>全局变量 2>局部变量 3.三种存储区分别存储那种变量 1>静态存储区 - 在编译分配空间的时候初始化,程序运行时存在 全局变量.静态局部变量 2>stack 栈存放局部变量(这个变量是引用变量或编辑器负责自动释放的变量,例如:int,long,double基础类型,她们并没

iOS内存管理 ARC与MRC

想驾驭一门语言,首先要掌握它的内存管理特性.iOS开发经历了MRC到ARC的过程,下面就记录一下本人对iOS内存管理方面的一些理解. 说到iOS开发,肯定离不开objective-c语言(以下简称OC).OC的内存管理机制叫做引用计数,就是一块内存地址可以同时被多个对象引用,每引用一次,引用计数都会递增1,当对象每解除一次引用,引用计数就会递减1,直到引用计数为0时,系统才会讲这块内存地址回收释放掉,这与C/C++语言有些不同,但是它们都遵守同一个内存管理法则:谁申请,谁释放. 在早些时候,iO

【Bugly干货分享】iOS内存管理:从MRC到ARC实践

Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 对于iOS程序员来说,内存管理是入门的必修课.引用计数.自动释放等概念,都是与C语言完全不同的.搞明白这些,代码才有可能不 crash.然而就是这么牛逼的内存管理,着实让我这个从 C 转过来的老程序员头疼了一段时间. [C++ 程序员的迷惑和愤怒] iOS 内存管理的核心是引用计数.与众多五年甚至更多以上开发经验的程序员一样,笔者当初是

IOS内存管理retain,assign,copy,strong,weak

IOS内存管理retain,assign,copy,strong,weak IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数. 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样. (一般情况下: 后面会讨论例外情况)alloc 对象分配后引用计数为1retain 对象的引用计数+1copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变 release 对象引用计数-1 如果为

iOS开发实践之cell下载图片(NSOperation)

滚动列表cell的图片从服务器上下载显示,利用多线程和缓存技术 高效下载显示图片. cell下载图片思路: 1.定义images字典存放下载后的图片(图片下载url作为key,图片作为value)cell图片先去images字典中找,没有就往下(沙盒中查找). 2.查找沙盒是否存在,若存在就设置cell图片,否则显示占位图片(增强体验感)并开启线程下载图片. 3.定义字典operations存放所有的下载操作(url是key,operation对象是value).判断下载操作是否存在,若存在 说