iOS开发——项目实用技术OC篇&将Block作为代理来使用,实现传值

将Block作为代理来使用,实现传值

在这里http://www.cnblogs.com/iCocos/p/4659878.html,笔者已经将代理,Block,通知传值的方式总结了一下,今天使用的不一样,我们这里使用的是在一个方法中将一个block代码保存起来,再回到blcok内部去执行。

  • 这里使用的是在地图中,,,,好了不多说,开干

1:首先,定义一个blcok

typedef void(^ResultBlock)(CLLocation *currentLoc, CLPlacemark *placemark, NSString *error);

2.声明一个带Block块的方法,方便外面调用并且传入block代码块

1 /**
2  *  获取当前位置
3  *
4  *  @param block 获取当前位置后处理的block
5  */
6 - (void)getCurrentLocation:(ResultBlock)block;

3.在实现文件中定义一个blcok属性,用语纪录后面方法中传入的block,并且执行

// 存储外界传递的代码块
@property (nonatomic, copy) ResultBlock resultBlock;

4.实现Block对应的方法

 1 // 获取当前位置
 2 - (void)getCurrentLocation:(ResultBlock)block
 3 {
 4     // 记录代码块
 5     self.resultBlock = block;
 6
 7
 8     // 判断是否开启定位服务
 9     if ([CLLocationManager locationServicesEnabled]) {
10         // 开始更新用户位置
11         [self.locationM startUpdatingLocation];
12     }
13     else
14     {
15         self.resultBlock(nil, nil, @"定位服务未开启");
16     }
17 }

5.在需要执行代码块的位置判断并且执行外部传入的block(这里跟上面提到的文章中的实现时一样的)

        if (self.resultBlock) {
            self.resultBlock([locations lastObject], [placemarks firstObject], nil);
        }

6,外面使用的时候直接跟使用UIView动画一样,在后面会附加一个blcok,我们只需要在这个blcok里面实现对应的代码,系统会自动将这段代码先保存,再放到blcok内部去执行

1     [[iCocosLocationTool sharediCocosLocationTool] getCurrentLocation:^(CLLocation *currentLoc, CLPlacemark *placemark, NSString *error) {
2         if ([error length] == 0) {
3             NSLog(@"%@   ----   %@", currentLoc, placemark.name);
4         }
5     }];
时间: 2024-12-24 15:25:26

iOS开发——项目实用技术OC篇&将Block作为代理来使用,实现传值的相关文章

iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据

网络爬虫-使用青花瓷抓取网络数据 由于最近在研究网络爬虫相关技术,刚好看到一篇的的搬了过来! 望谅解..... 写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教程,于是待问题解决后抽时间截了图,自己写一遍封存在博客园中以便以后随时查阅. charles又名青花瓷,在iOS开发中的抓包中具有重要作用.最大的三点用处,一就是拦截别人软件的发送的请求和后端接口,练习开发.二是自己后端返回的response拦截修改后再接收以达到测试临界数据的作用.三写脚本重复拦截

iOS开发——网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据

网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一片文章已经介绍我们可以使用两个方式来抓取网络数据实现网络爬虫,并且大致介绍了一下怎么使用正则表达式去实现数据的抓取 由于笔者曾经学过一段时间java和android相关的技术,今天就讲讲怎么使用java去抓取网络数据,关于Python有机会等笔者好好研究一下再来分享,但其实会一种就可以,除非你的需求

iOS开发——项目总结OC篇&iOS 长按事件菜单的实现(剪切版)

iOS 长按事件菜单的实现(剪切版) 一:简单实现菜单 添加长按手势 [self.label addGestureRecognizer:[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(labelClick)]]; 实现手势方法 1 - (void)labelClick 2 { 3 // 获得菜单 4 UIMenuController *menu = [UIMenuController share

iOS开发——项目实战OC篇&类QQ黏性按钮(封装)

类QQ粘性按钮(封装) 那个,先来说说原理吧: 这里原理就是,在界面设置两个控件一个按钮在上面,一个View在下面(同样大小),当我们拖动按钮的时候显示下面的View,view不移动,但是会根据按钮中心点和它的中心点的距离去等比例变化自己的半径,越远半径酒越小,最后就会消失,而我们这里吗最难的就是在变化的过程中去计算并且设置他们两个之间的区域并且填充.这里需要计算六个点的位置(根据勾股定理),然后根据两个控件同一边的位置的两个点去绘制一条曲线.拖动距离到达一定的时候就会使用动画(序列帧)去清楚界

iOS 开发——版本适配OC篇&项目开发之系统适配问题(关于后台)

项目开发之系统适配问题 关于后台 在之前iOS 开发中,我们精彩遇到关于app适配问题,有屏幕适配,系统适配,但是由于苹果新设备(iphone 6/6p)技新术(sizeClass)的推出在屏幕适配上变的非常简单,而且之前关于app在系统适配上还是比较多的,可能是由于ios7的大改革,后面字啊iOS7盒iOS8上面的api并没有太大的差别,所以关于系统适配,我们并没有考虑太多. 但是,作为一个合格的开发者,不管是实际项目开发中,还是平时我们都要注意系统的视频,毕竟ios9又出来了,虽然常用api

ios开发——实用技术篇OC篇&iOS的主要框架

iOS的主要框架         阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core Graphics框架帮助你创建图形 Core Animation允许你创建高级的动画和虚拟效果 OpenGL ES 框架提供2D和3D绘图工具 将别的框架添加到工程里 本文是<Sunvey the Major Framworks>一文的翻译 框架是一个目录,这个目录包含了共享库,访问共享库里代码

iOS开发——UI精选OC篇&amp;UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道,单例在应用程序的整个生命周期中只有一个对象). App的启动过程 打开程序之后-> 1:Main函数 2:UIapplicationMain函数 3:初始化UIApplication(创建) 4:设置UIApplication代理和相应的代理属性 5:开启事件循环,监听系统事件 6监测info.p

iOS开发——使用技术OC篇&amp;保存(获取)图片到(自定义)相册

保存(获取)图片到(自定义)相册 最近在学 iOS相关技术(绘图篇实现画板功能)的时候设计到了两个常用的知识点,那就是保存图片到相册和葱相册中获取图片. 只是个人比较好奇拓展一些技术,说的难听点叫做装牛角尖,好听点就是为了装逼而已,所以在保存相册的时候使用真及测试发现不能保存到我iPhone里 main的自定义相册里面,就查看文档和资料,也借鉴别人的分享实现了想要的功能,就把他给记录下来,这个虽然没有直接保存和获取常用但是也是一项很好的实用技术. 一:首先来看看怎么获取相册的图片: 1 // 弹

iOS开发——数据持久化OC篇&amp;(三)对象归档

归档 iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存放在文件中. 二.代码示例 1.文件结构 2.代码示例 YYViewController.m文件 1 // 2 // YYViewController.m 3 /