Day4

1 Strong and Weak

#import "Person.h"

@implementation Person

- (void)dealloc
{
    NSLog(@"person destroy");
}

@end

强指针:strong系统一般不会自动释放

弱指针:weak 系统会立即释放对象

//
//  ViewController.m
//  BasicKnowledge
//
//  Created by xin on 15-3-16.
//  Copyright (c) 2015年 Jackey. All rights reserved.
//

#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
@property (nonatomic,strong) Person *person;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    //strong pointer
    //won't release the memory
    //默认的是强指针
    //不执行销毁语句
    self.person = [[Person alloc]init];
    
    //这里是强指针,但是这是个局部对象,在viewdidload执行完后会执行销毁语句
    Person *person1 = [[Person alloc]init];
    
    //立即释放
    __weak Person *person2 = [[Person alloc]init];
    //strong weak 的区别:
    //strong为持有者,weak为观望者,就像strong是一条狗链子
    NSLog(@"-----");
}

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

@end
//
//  ViewController.m
//  BasicKnowledge
//
//  Created by xin on 15-3-16.
//  Copyright (c) 2015年 Jackey. All rights reserved.
//

#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
@property (nonatomic,strong) Person *person;
@property (nonatomic,weak) Person *weakPerson;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    //strong pointer
    //won't release the memory
    //默认的是强指针
    //不执行销毁语句
    //体现strong和weak的区别
    //strong 为持有者,牵着person对象,weakperson为虚指向person对象
    //下面的情况,weakperson不会被自动销毁
    self.person = [[Person alloc]init];
    self.weakPerson = self.person;
    
    NSLog(@"-----");
}

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

@end

weak指针一般指向strong pointer的对象

    //拖拉的控件用weak
    //属性对象用strong
    //整数非对象类型用assign
  //NSString 用copy

2 block的使用

-(void)downloadClick:(UIButton *)button{
    UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(80, 400, 160, 40)];
    lable.textAlignment = NSTextAlignmentCenter;
    lable.backgroundColor = [UIColor lightGrayColor];
    NSDictionary *dict = self.appList[button.tag];
    lable.text = [NSString stringWithFormat:@"下载%@完成",dict[@"name"]];
    
    lable.font = [UIFont systemFontOfSize:13.0];
    lable.alpha = 0.0;
    [self.view addSubview:lable];
    
    //动画效果
    //[UIView beginAnimations:nil context:nil];
    //[UIView setAnimationDuration:1.0];
    //lable.alpha = 1.0;
    //[UIView commitAnimations];
    
    [UIView animateWithDuration:1.0 animations:^{
        lable.alpha=1.0;
    } completion:^(BOOL finished) {
        [lable removeFromSuperview];
    }];
    
    
}

  

 

原文地址:https://www.cnblogs.com/lihaozhou/p/4342573.html