iOS 高阶

1.UIStoryBoard

2. segue跳转传值

3. UIColor配色

    

    //1. 十进制配色

    [UIColor colorWithRed:163.0/255.0 green:148.0/255.0 blue:128.0/255.0 alpha:1.0];

    //2. 设置16进制颜色(同上)

    [UIColor colorWithRed:0xba/255.0 green:0x21/255.0 blue:0xd5/255.0 alpha:1.0];

4. XML解析

 

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property(nonatomic,copy) NSString *pid;

@property(nonatomic,copy) NSString *name;

@property(nonatomic,copy) NSString *sex;

@property(nonatomic,copy) NSString *age;

@end

 

#import <Foundation/Foundation.h>

#import "Person.h"

@interface XMLUtil : NSObject<NSXMLParserDelegate>

@property(nonatomic,strong) NSXMLParser *par;

@property(nonatomic,strong) Person *person;

//存放每个person

@property(nonatomic,strong) NSMutableArray *list;

//标记当前标签,以索引找到XML文件的内容

@property(nonatomic,copy) NSString *currentElement;

//声明parse方法,通过它实现解析

-(void)parse;

@end

@implementation XMLUtil

 

-(instancetype)init {

    

    self = [super init];

    

    if (self) {

        

        //获取事先准备好的XML文件

        NSBundle *b = [NSBundle mainBundle];

        NSString *path = [b pathForResource:@"test" ofType:@".xml"];

        

        NSData *data = [NSData dataWithContentsOfFile:path];

        self.par = [[NSXMLParser alloc] initWithData:data];

        

        //添加代理

        self.par.delegate = self;

        //初始化数组,存放解析后的数据

        self.list = [NSMutableArray arrayWithCapacity:5];

        

    }

    

    return self;

    

}

 

//几个代理方法的实现,是按逻辑上的顺序排列的,但实际调用过程中中间三个可能因为循环等问题乱掉顺序

//(1).开始解析

-(void)parseDiaStartCocument:(NSXMLParser *)parser {

    

    NSLog(@"parserDidStartDocument...");

}

 

//(2).准备节点

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict {

    

    self.currentElement = elementName;

    if ([self.currentElement isEqualToString:@"student"]) {

        

        self.person = [[Person alloc] init];

        

    }

}

 

//(3). 获取节点内容

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

    

    if ([self.currentElement isEqualToString:@"pid"]) {

        

        [self.person setPid:string];

    }else if ([self.currentElement isEqualToString:@"name"]) {

     

        [self.person setName:string];

    }else if ([self.currentElement isEqualToString:@"sex"]) {

        

        [self.person setSex:string];

    }else if ([self.currentElement isEqualToString:@"age"]) {

        

        [self.person setAge:string];

    }

}

 

//(4). 解析完一个节点

-(void)parseDidEndDocument:(NSXMLParser *)parser {

    

    NSLog(@"parserDidEndDocument...");

}

 

//外部调用借口

-(void)parse {

    

    [self.par parse];

}

@end

5. JSON解析

 //1. Json数据封包

    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];

    

    //isValidJSONSerialization判断对象是否可以构建成json对象

    if ([NSJSONSerialization isValidJSONObject:dic]) {

        

        NSError *error;

        //创建一个json从Data,NSJSONWritingPrettyPrinted指定的JSON数据产的空白,使输出更具可读性

        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];

        NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

        

        NSLog(@"json data:%@",json);

    }

    //2. Json数据解析

    NSError *error;

    //加载一个NSURL对象

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101120101.html"]];

    //将请求的url数据放到NSData对象中

    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    //IOS自带解析类NSJSONSerialization从response中解析出数据放到字典中 - crash here - TBD

    NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];

    

    NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];

    

//    NSDictionary *text = [NSString stringWithFormat:@"今天是%@ %@ %@ 的天气状况是:%@ %@",

//                          [weatherInfo objectForKey:@"day_y"],

//                          [weatherInfo objectForKey:@"week"],

//                          [weatherInfo objectForKey:@"city"],

//                          [weatherInfo objectForKey:@"weather1"],

//                          [weatherInfo objectForKey:@"temp1"]];

    NSDictionary *text = [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是: %@ %@",[weatherInfo objectForKey:@"day_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"],[weatherInfo objectForKey:@"weather1"],[weatherInfo objectForKey:@"temp1"]

                          ];

    NSLog(@"weatherInfo: %@",text);

6. 多线程

    1.NSThread - 苹果封装后,并且完全面向对象

//    //(1). 先创建线程类,在启动

//    //创建

//    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:nil];

//    

//    //启动

//    [thread start];

//    

//    //(2). 创建并启动

//    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:nil];

    

    

    //2. GCD - 苹果为多核的并行运算提出的解决方案

    

    //在GCD中,加入了2个非常重要的概念:任务和队列.

    //队列:分串行和并行2种

    //(1). 主队列:用于刷新UI

    //创建

//    dispatch_queue_t queue = dispatch_get_main_queue();

    

    //(2).自己创建的队列:用于耗时渐咋

    //串行队列

//    dispatch_queue_t queue = dispatch_queue_create("tk.bourne.testQueue", NULL);

    //并行队列

//    dispatch_queue_t queue = dispatch_queue_create("tk.courne.testQueue", DISPATCH_QUEUE_SERIAL);

    

    //(3). 全局并行队列:只要是并行队列任务一般都加入到这个队列,这是系统提供的一个并发队列

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_SERIAL, 0);

    

    //任务:分同步和异步两种

    //(1).同步任务:不会另开线程,会阻塞当前线程

    dispatch_sync(queue, ^{

                  //code here

    });

    

    

    //(2).异步任务:会另开线程,不会阻塞当前线程

    dispatch_sync(queue, ^{

        //code here

    });

    

    

    //3. NSOperation和NSOperationQueue

    /*

        对GCD的封装,完全面向对象,NSOperation和NSOperationQueue分别对应GCD的任务和队列。

        操作步骤:  1. 将要执行的任务封装到一个NSOperation对象中.

                 2. 将此任务添加到一个NSOperationQueue对象中.

    

        注意:NSOperation只是一个抽象类,所以不能封装任务。但它有2个子类用于封装任务。

            分别是:NSInvocationOperation 和 NSBlockOperation。创建一个Operation后,

            需要调用start方法来启动任务,它会默认在当前队列同步执行。当然可以在中途取消一个任务,

            只需要调用起cancel方法即可.

     */

    

    //NSInvocationOperation:需要传入一个方法名

    //1.创建NSInvocation对象

//    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run) object:nil];

//    

//    //2.开始执行

//    [operation start];

    

    //1.创建NSBlockOperation对象

    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{

        

        

        

    }];

    

    //可以添加多个block

    for (NSInteger i = 0; i < 5; i ++ ) {

        [operation addExecutionBlock:^{

            

            NSLog(@"第%ld次: %@",i,[NSThread currentThread]);

        }];

    }

    

    //2.开始执行

    [operation start];

7.动画效果

8. NSUserDefaults

//.简介

    /*

         NSUserDefaults是一个单例

      他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,

      也是大家喜欢用它保存简单数据的一个主要原因.

     */

    

    

    //1. NSUserDefaults

    // NSUserDefaults支持的数据类型有: NSNumber(NSInteger、float、double),NSString、NSDate、NSArray、NSDictionary、BOOL;

    //将NSString对象存储到NSUserDefaults中

//    NSString *passWord = @"123456";

//    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

//    [user setObject:passWord forKey:@"userPassWord"];

    

    //将数据取出来

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    NSString *passWord = [user objectForKey:@"userPassWord"];

    

    

    

    //2.NSUserDefaults存储对象

    //NSUserDafaults本身不支持自定义对象的存储,不过它支持NSData的类型,所以可以选择使用归档,将自定义对象转为NSData类型后存入NSUserDefaults.

    

    //(1).将Student类的数据归档

    //(2).将Student对象存入NSUserDefaults

    Student *student = [[Student alloc] int];

    student.name = @"ladyO";

    student.sex = @"女";

    

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:student];

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    [user setObject:data forKey:@"oneStudent"];

    //(3).从NSUserDefaults取出Student对象

    NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

    NSData *data = [user objectForKey:@"oncStudent"];

    Student *student = [NSKeyedArchiver unarchiveObjectWithData:data];

9. 网络请求

 

转载于:https://www.cnblogs.com/share-iOS/p/6131137.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 顶部标签切换,Android实现底部切换标签

本文实例为大家分享了Android实现底部切换标签的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下实现底部通用切换标签 &#xff0c;嵌套Fragment&#xff0c;方便自定义布局自定义控件&#xff1a;widget_tab_view.xmlandroid:layout_width"match_parent"a…

simulink显示多个数据_Matlab/Simulink与自动驾驶(ADAS)算法开发

Simulink是如何存在自动驾驶的开发过程中&#xff1f;废话少讲&#xff0c;让咱们开始娓娓道来&#xff01;自动驾驶的开发架构是什么&#xff1f;自动驾驶软件开发基础的架构&#xff0c;逃不出我们经常所说的三大法宝&#xff0c;感知--- 决策(规划)--- 执行(控制)&#xff0…

数字孪生智慧城市建设加速5G+产业AI的应用,全流程数据透明化及实时可控成为升级的大方向,构建智慧城市生态圈在路上!...

本视频为深圳市副市长和IDG领导在高交会智慧城市论坛上的讲话。来源&#xff1a;北京物联网智能技术应用协会 本期正文Digital Twin数字孪生&#xff1a;是充分利用物理模型、传感器更新、运行历史等数据&#xff0c;集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0…

Linux部署Apache ActiveMQ 5.14.1

Linux部署Apache ActiveMQ 5.14.1 简单记一下&#xff0c;下载地址 http://activemq.apache.org/download.html 一、安装JDK7以上&#xff0c;官方说明&#xff1a;http://activemq.apache.org/version-5-getting-started.html 二、创建目录&#xff1a; cd /usrmkdir activemq…

python做excel表格柱状图_Python Excel 绘制柱形图

原博文 2019-11-19 22:07 − 本文主要讲述如何使用Python操作Excel绘制柱形图。 相关代码请参考 https://github.com/RustFisher/python-playground 本文链接&#xff1a;https://www.rustfisher.com/2019/11/19/Python/Python-op-ex... 相关推荐 2019-12-08 20:02 − 利用Pyth…

管理口地址 ibm_WAN口有IP地址上不了网如何解决 WAN口有IP地址上不了网解决方法【详解】...

设置好路由器WAN口PPPoE拨号后&#xff0c;WAN口状态已经显示获得到IP地址&#xff0c;如下图&#xff1a;WAN口有IP地址上不了网怎么办但是终端设备连接路由器无法上网&#xff0c;请参考以下步骤排查。电脑需要设置为自动获得IP地址&#xff0c;如果您不清楚如何设置&#xf…

IBM 消费者洞察报告,揭示 5G 娱乐时代的三大关键趋势

来源&#xff1a;IBM中国 5G 时代来临&#xff0c;三大变革力量的出现&#xff0c;注定让“传统媒体”彻底无眠。消费者对 5G 技术兴趣盎然 5G 为消费者带来的最重要好处是能够提升移动视频流的质量&#xff0c;最终转向超高清 (UHD) 格式。 沉浸式媒体吸引了消费者的浓厚兴趣 …

什么时候需要coinitialize_机器学习模型什么时候需要做数据标准化?

机器学习Author&#xff1a;louwillMachine Learning Lab一直都有朋友在做机器学习模型时有疑问&#xff1a;我的数据要不要做标准化处理&#xff1f;这个问题笔者也思考过&#xff0c;只不过不够系统&#xff0c;观点也比较单一&#xff0c;所以才有了上图中的【变量单位之间数…

机器人与人工智能: 应对全球挑战的终极途径

来源&#xff1a;中国指挥与控制学会欧洲机器人协会主席伯纳德利珀特&#xff08;Bernd Liepert&#xff09;近日在2019 世界机器人大会上透露&#xff0c;未来产业界将在欧洲机器协会的项目中发挥领导作用&#xff0c;欧盟正在推动一个2021 年至2027 年的新项目&#xff0c;总…

6位顺序号生成_分布式id生成策略,我和面试官扯了一个半小时

一、分布式系统带来ID生成挑战在分布式系统中&#xff0c;往往需要对大量的数据如订单、账户进行标识&#xff0c;以一个有意义的有序的序列号来作为全局唯一的ID。而分布式系统中我们对ID生成器要求又有哪些呢?全局唯一性&#xff1a;不能出现重复的ID号&#xff0c;既然是唯…

数据库的前世今生

译者 | 谭开朗编辑 | 屠敏来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;【CSDN 编者按】被称之为基础软件三驾马车之一的数据库&#xff0c;在经历了层次型和网状型、关系型数据型库以及更加强大的数据管理功能等三个时期之后&#xff0c;其在未来的发展历程中还…

android app links,Android APP Links 配置

一. 简介在Instant App开发中&#xff0c;需要app支持Instant App Links. 本文中&#xff0c;主要介绍其作用&#xff0c;配置必需条件&#xff0c;配置的过程。二. 作用App Links 本质上是 Deep Link 的一种延伸&#xff0c;我们知道&#xff0c;Deep Link配置在Manifest之后&…

【边缘计算】对边缘计算的理解与思考

来源&#xff1a;边缘计算社区在2019年第三届边缘计算技术研讨会上华为高级产业发展经理、ECC需求与总体组副主席黄还青发表了《ECC及华为在边缘计算领域的思考与实践》主题演讲&#xff0c;本文为黄还青演讲中对边缘计算理解及思考。首先我们认为边缘计算的兴起应该是在过去三…

【代码笔记】iOS-实现网络图片的异步加载和缓存

代码&#xff1a; - (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.self.title"EGOImageViewDemo"; //实现网络图片的异步加载和缓存 EGOImageView *imageView [[EGOImageView alloc] initWithPlaceholderImage:[UIIm…

python executemany执行延迟_运维架构师-Python 自动化运维开发-031

*运维架构师-Python 自动化运维开发-031十九、Python3 操作数据库1、Python3 操作 MySQL1、基本介绍Python3 操作 MySQL 数据库 可以使用的模块是 pymysql 和 MySQLdb。这个两个模块都是通过自己的 API 执行原生的 SQL 语句实现的。MySQLdb 是最早出现的一个操作 MySQL 数据库的…

bilibili 解析_用 Python 抓取 bilibili 弹幕并分析!

时隔一年&#xff0c;嵩哥带来他的新作《雨幕》。他依旧认真创作&#xff0c;追求高品质&#xff0c;作品在发表之前已听了五百遍以上。如此高品质的音乐&#xff0c;大家如何评价呢&#xff1f;通过哔哩哔哩上的视频弹幕&#xff0c;感受一下。01 实现思路首先&#xff0c;利用…

2019中国科学院、中国工程院院士增选名单正式发布

来源&#xff1a;医谷医学讯 今日&#xff0c;“两院”院士2019年增选名单正式公布。中国科学院选举产生了64名中国科学院院士和20名中国科学院外籍院士。中国工程院共选举产生75位院士和29位外籍院士。2019年新当选中国科学院院士名单&#xff08;共64人&#xff0c;分学部按姓…

微信 小程序 canvas

测试手机为IPHONE6,开发者工具版本0.10.102800。开发者工具0.11.112301版本也一样 微信小程序里的canvas 非 h5 canvas有很多不一样的地方&#xff0c;以下把微信小程序的canvas叫做wxcanvas 下面全是我一点点测试出的干货&#xff0c;耐心看&#xff1a; 1.wxcanvas,不像h5can…

Android App赞赏功能,微信公众号赞赏功能升级:作者可直接收到赞赏, iOS安卓均可用...

DoNews6月6日消息 (记者 费倩文)微信公众平台发布消息称&#xff0c;公众号赞赏功能升级为“喜欢作者”&#xff0c;开启了赞赏的文章在原创文章底部有“喜欢作者”的入口&#xff0c;作者可以直接收到读者赞赏&#xff0c;在 iOS 版和 Android 版微信上都可以使用。据了解&…

hashcode是什么意思_什么才是 Java 的基础知识?

作者&#xff1a;晓风轻链接&#xff1a;zhuanlan.zhihu.com/p/28615617近日里&#xff0c;很多人邀请我回答各种j2ee开发的初级问题&#xff0c;我无一都强调java初学者要先扎实自己的基础知识&#xff0c;那什么才是java的基础知识&#xff1f;又怎么样才算掌握了java的基础知…