http://my.oschina.net/leejan97/blog/268536

http://blog.csdn.net/enuola/article/details/8674063

注意事项
1.内联的block中内部定义的变量 自己本身有读写权限
2.block内部要修改外部变量 需要将外部变量声明__block
3.Block retain是无效的,要想保留block生命周期,可以通过copy来实现,记得release
4.被block的应用的对象,retainCount会自动加一,为了打破这种 retain circle,可以在对象前加__block,这样block块就不会维护这个对象了
下面的写法如果不加上_block a无法dealloc
__block A  a =[ [[A alloc] init] withBlock:^{
[a action];
[ a release];
}]; //这样A的dealloc方法就会调用
@interface ViewController : UIViewViewController 
{
NSString *_string;
}
__block ViewController *controller = self;   
_block = ^{
NSLog(@"string %@",controller->_string);
};
5.在独立的block中不能引用self,如果需要访问可以使用参数传递的方法(可以把其考虑成c+中参数传入函数指针对应copy)**
6.不要随便用.语法
#import <UIKit/UIKit.h>   
@interface AppDelegate : NSObject <UIApplicationDelegate>
@property (nonatomic, strong) NSString *stringProperty;  
@end
#import "GCDAppDelegate.h" 
@implementation AppDelegate 
@synthesize stringProperty;  
- (void) BlockTestError{
HelloBlock myBlock= ^(void){
self.stringProperty = @"Block Objects"; 
NSLog(@"String property = %@", self.stringProperty);//运行错误
};
myBlock();
}}  
- (void) BlockTestCorrect{
HelloBlock myBlock= ^(void){
[self setStringProperty:@"Block Objects"];
NSLog(@"self.stringProperty = %@", [self stringProperty]); //运行ok
};
myBlock();
}}  
@end

转载于:https://www.cnblogs.com/woaixixi/p/5012301.html

iOS Block全面分析相关推荐

  1. iOS crash 问题分析汇总

    在这里插入图片描述 iOS crash 问题分析 iOS crash 常用分析工具 IOS 崩溃日志 iOS crash 原因分析 1.调用悬浮指针 2.数组越界访问 3.调用了未实现的方法 4.调用 ...

  2. Enterprise Library: Data Access Application Block配置文件分析篇

    Enterprise Library: Data Access Application Block配置文件分析篇 Enterprise Library提供了Configuration Console配 ...

  3. HTTP Live Streaming直播(iOS直播)技术分析与实现(转)

    HTTP Live Streaming直播(iOS直播)技术分析与实现 转载于:https://www.cnblogs.com/chen-jt/p/3885223.html

  4. iOS奔溃分析技巧-crash日志符号化---symbolicatecrash

    iOS 使用symbolicatecrash分析crash文件 iOS 使用symbolicatecrash分析crash文件 首先,在桌面建一个文件夹crash,接着需要准备4个文件: 1.崩溃日志 ...

  5. iOS深入学习(Block全面分析)

    本文翻译自苹果的文档,有删减,也有添加自己的理解部分. 如果有Block语法不懂的,可以参考fuckingblocksyntax,里面对于Block 为了方便对比,下面的代码我假设是写在ViewCon ...

  6. iOS - block变量捕获原理

    block对变量的捕获 1:可以捕获不可以修改变量 局部变量 2:可以捕获且可以修改变量 全局变量 静态变量 __block修饰的局部变量 原理分析: 1. 局部变量为什么可以被捕获确不能修改 int ...

  7. iOS底层-KVO分析与自定义

    KVO分析与自定义 背景 准备 KVO一些细节 KVO探索分析 KVO 底层原理 小结: KVO自定义 自定义KVO要知道: 1,KVO是对setter方法进行观察,过滤实例方法 2,添加KVO(核心 ...

  8. ios android安全性分析,Android与iOS的对比分析及Android安全技术的设计与实现

    摘要: 近年来科技的发展和进步极大的推动了智能手机的飞速发展,手机功能的日益强大使人们对其依赖度显著上升.作为与人们生活密不可分通讯工具,手机安全的重要性不言而喻.现如今,随着手机网络的迅猛发展和形形 ...

  9. IOS block 教程

    2019独角兽企业重金招聘Python工程师标准>>> 本章学习目标: 1. 了解何谓block.  2. 了解block的使用方法. 注:变数=变量 Block 是iOS在4.0之 ...

最新文章

  1. ES6基础之Array.fill函数
  2. AI给老照片上色,真的准吗?技术圈和历史圈吵了1000帖
  3. python数据分析视频网盘-利用Python进行数据分析视频教程云盘下载
  4. 优集品 php,从细节处着眼 优集品打造成人世界的儿童节
  5. 福利来袭,送你105例C语言实战
  6. Win-MASM64汇编语言-LOOP指令
  7. android debug bridge tools_飞凌干货丨Android 应用程序如何获取system权限
  8. 公司管理系列--最难挖的阿里,最好挖的百度;最难走的360,最易走的腾讯
  9. Swift 中函数使用指南
  10. DevExpress XtraReports 入门五 创建交叉表报表
  11. php呼伦贝尔,呼伦贝尔php培训
  12. android viewholder静态,使用内部viewHolder时声明为static的原因
  13. 解决vs code使用code runner无法输入数据问题
  14. flutter 生成图片保存到手机相册
  15. pytorch-YOLOv3移植到寒武纪
  16. msgbox窗口学习总结窗体复合框
  17. SwiftUI放在Section中的进度条(ProgressView)首次刷新时不显示的解决
  18. LeetCode225. Implement Stack using Queues
  19. poj 3525 多边形内核,缩进
  20. C++ 二叉排序树(二叉查找树、二叉搜索树)

热门文章

  1. webpack --- [读书笔记] webpack中常用的一些配置项
  2. jquery --- 收缩兄弟元素
  3. AnularJS1事件
  4. OPENCV-7 学习笔记
  5. Jquery操作select小结
  6. virtualbox中安装ubuntu
  7. 比特币到底是不是货币?
  8. Go语言学习资料整理
  9. CentOS查看和修改PATH环境变量的方法
  10. 工业无线遥控器 SUNRF-1011RC