(whh仅供自己参考)进行ip网络请求的步骤

这个过程大致是这个样子:


1 添加通知


2 发送网络请求 里边有一个发送通知的操作


3 执行发送通知的具体操作

代码如下:

1 在VC添加通知

 [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(receivingYM1:)
                                                 name:@"YM1" object:nil];
   

2 在SYNDispatchProcessor.m 中进行发送通知

-(void) delayTimeGCDbuild
{

//    NSLog(@"主线程 %@", [NSThread  currentThread]);
    //间隔还是1秒
    uint64_t interval = 1 * NSEC_PER_SEC  / 100 ;
    //创建一个专门执行timer回调的GCD队列
//    dispatch_queue_t queue = dispatch_queue_create("my queue", 0);
     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //创建Timer
    _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    //使用dispatch_source_set_timer函数设置timer参数
    dispatch_source_set_timer(_timer, dispatch_time(DISPATCH_TIME_NOW, 0), interval, 0);

    //设置回调
    dispatch_source_set_event_handler(_timer, ^()
    {
        [self.arrayLock lock];
        if([protocolmutableArrays count]>0)
        {
            NSData* nData = [protocolmutableArrays objectAtIndex:0];
           // NSLog(@"Hava received datas is----- :%@",[self nDataToGbkString:nData]);
            NSData* d = [nData subdataWithRange:NSMakeRange(5, 3)];

            NSString* aStr = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding];
           NSLog(@"在这里进行类型的判断:%@",aStr);
            {

                //在这里发送通知
                [[NSNotificationCenter defaultCenter] postNotificationName:aStr object:[nData subdataWithRange:NSMakeRange(10, nData.length-10)]];

            }

            [protocolmutableArrays removeObjectAtIndex:0];
        }
       [self.arrayLock unlock];

    });

3 执行发送通知的事件

//发送完通知之后接收到漫画数据
- (void) receivingYM1:(NSNotification*) anotification
{
    //收到的是漫画的4个cell的大图跟一些相关信息
    NSData* nsData =  [anotification object];
    NSString *string = [[NSString alloc]initWithData:nsData encoding:NSUTF8StringEncoding];
    NSLog(@"nsdata:%@",string);
    [self performSelectorOnMainThread:@selector(updateResgContollerYM1:) withObject:nsData waitUntilDone:YES];
}
//更新幽默坊漫画ui
-(void) updateResgContollerYM1:(id) data
{
    //将data转换成字典类型
    NSDictionary* YM1Dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

    //用数组进行接收
    NSMutableArray *commicArr = [YM1Dict valueForKey:@"comicList"];

    //将数据存到字典中
    self.FirComicDic = [commicArr objectAtIndex:0];
    self.SndComicDic = [commicArr objectAtIndex:1];
    self.ThdComicDic = [commicArr objectAtIndex:2];
    self.FourthComicDic = [@{@"comicContent":@"酒鬼",@"comicId":@"4"} mutableCopy];

}
时间: 2024-10-14 07:02:08

(whh仅供自己参考)进行ip网络请求的步骤的相关文章

sersync 开机自启 (仅供自己参考)

sersync是一个软件,,相应的他的启动时一个脚本执行,并非命令,,所以添加到/etc/rc.local中没有效果 我们从网络上下载好sersync,,解压到本地,,然后将sersync这个目录复制到/usr/local下 将/usr/local/sersync/bin/sersync 赋予可执行权限  然后复制到/etc/init.d下 然后在/etc/init.d中编写脚本如下:(这里我命名为sersync.sh) #!/bin/bash# chkconfig: 2345 10 90 #

webpack构建速度优化-记录一次公司项目build优化(不完全记录)仅供翻阅参考

打包速度 转化AST—>遍历树—>转化回代码(具体语法配置参考webpack,这边只是个人的一些过程记录,并不包含详细过程)1.缓存 cache-loader2.多核 happypack threads3.抽离 DllPlugin.externals4.拆分 Docker 优化项目:测量插件speed-measure-webpack-plugin 用法: 优化前:可以看到我们公司的项目还是比较残暴的!!开启AOT(Angular5项目)之后,线上构建达到了41分钟! 测量出现的问题:raw-l

C,Go,Rust,Nim 4语回文数大战!仅供娱乐参考!

联想笔记本 inter i7,2.4GHz,16G,win10 C语言(应该是全C,vs2015编译) #include<stdio.h> #include<stdlib.h> #include<time.h> bool ishuiwen(int n) {     int sn = 0;     sn = n;     int tn = 0;     while (sn != 0) {         tn = tn * 10 + sn % 10;         sn

kinect2跑高博的orbslam2的过程(仅供自己参考记录)

首先感谢高博的无私奉献!http://www.cnblogs.com/gaoxiang12/p/5161223.html 程序所在的目录为:/home/zty/catkin_ws/src/iai_kinect2/kinect2_viewer /src/kinect2_orb.cpp为修改的程序文件 /include/目录下面的头文件即为ORB_SLAM2/目录里面的头文件, kinect2_orb.cpp中将原来的#include "orbslam2/System.h"改为现在的#in

mathJax基础语法-0基础开始,(这是网上抄来的如果有权限和版权问题联系本人处理,仅供学术参考)

c#简单的ajax显示方法,仅供新人参考,大神勿喷!

通过后台拼接的方式实现ajax显示 后台代码: public string IndexDo2()        {            StringBuilder str = new StringBuilder(); //引用命名空间 System.Text            List<Hmodel> list = bll.SentSayShow();            foreach (var reg in list)            {                str

java经典编程(1)(要点而已,仅供自己参考)

一 重定向输出流实现程序日志 1.setOut()方法改变输出流,因为system类的out,err,in成员变量是final类型. 二 自动类型转换与强制类型转换 三 加密可以这样简单(位运算) import java.util.Scanner; public class Example{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入一

PostgreSQL 创建分区表(转 仅供自己参考)

典型使用场景 随着使用时间的增加,数据库中的数据量也不断增加,因此数据库查询越来越慢. 加速数据库的方法很多,如添加特定的索引,将日志目录换到单独的磁盘分区,调整数据库引擎的参数等.这些方法都能将数据库的查询性能提高到一定程度. 对于许多应用数据库来说,许多数据是历史数据并且随着时间的推移它们的重要性逐渐降低.如果能找到一个办法将这些可能不太重要的数据隐藏,数据库查询速度将会大幅提高.可以通过DELETE来达到此目的,但同时这些数据就永远不可用了. 因此,需要一个高效的把历史数据从当前查询中隐藏

Vue实战记录(1)---仅供自己参考

2019.10.1------底部标签栏 1.公共组件标签栏使用vant的Tabbar标签栏 首先需要安装vant依赖并在main.js里面按需引入 不要永远只写静态布局,把标签元素里面使用的属性存在组件的data里面(数组里面存放对象,方便获取),利用v-for以及属性绑定的方式生成页面结构.              2.编程式导航实现路由的跳转 这个vant标签栏自带to属性实现路由跳转 我们自己运用编程式的方式实现(这个标签栏自带change事件切换标签时触发) change事件方法实现