
IOS开发
MChuajian
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用swift extention练习 扩展Int
本文是记录一下对swift extension的使用首先extension即扩展类用于扩展类功能,以适应不同人使用该类的时候不同需求作为一个扩展,不能为类增加正常属性,但是可以增加计算属性(通过类其他属性计算出来的值) 。扩展也可以为类增加功能函数extension people{func eat(food:Int) { self.weight += food ...原创 2019-01-15 21:26:35 · 349 阅读 · 0 评论 -
用Swift实现栈 泛型类型
栈last in first out型实例:打字消息的撤回系统栈调用程序(){}[]的匹配问题可以用数组直接实现(操作数组头和数组尾),担心栈存储空间不够的话,可以使用动态数组(当数组中值很大,自动扩充容量的数组)//泛型使用到结构体叫做泛型类型//存储的数据跟其逻辑没有关系//下面使用泛型声明一个栈struct Stack<T>{ var num = [...原创 2019-01-15 22:15:28 · 220 阅读 · 0 评论 -
Swift @autoclosure关键字的用法及场景
@autoclosure及自动封装成闭包我们先模拟一个场景 创建一个数组 我们先判断数组是否为空,再去判断他下标为0的元素是否为0显然这段场景需要先执行第一步才能再执行第二步 否则数组会出现越界我们使用下面代码let num = [Int]()//这里第一个条件判断出有问题就不会执行第二个操作了 这样就不会越界了if !num.isEmpty && num[0]>...原创 2019-01-22 00:20:34 · 1718 阅读 · 0 评论 -
Header 'RxCocoa-Swift.h' not found
暴力点就直接 pod --update把所有数据库都更新 并刷新或者进去workplace的pod工程里面 看看RxCocoa和RxSwift的buildSetting找swift Language version 是不是跟你使用Swift语言版本一样 (4.2就4.2对应)...原创 2019-02-05 16:41:58 · 1785 阅读 · 0 评论 -
Swift通过前序遍历和中序遍历实现重构二叉树
剑指Offer题目如下:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。前序遍历 遍历顺序是:A->B->C中序遍历 遍历顺序是 :B->A->C前序代码:traverse(n...原创 2019-02-10 14:13:28 · 686 阅读 · 0 评论 -
IOS关于TableViewDataSource中数据源同步问题
大家都知道,我们一般在主线程中刷新UI,然后在子线程中去加载网络数据和数据解析这时候,假如我们用户要在点击删除广告这一操作,这时候子线程又在加载数据(显然我们是在不同线程对同一资源做操作了),我们怎么通知子线程让他在显示数据的时候知道我们删除了这条广告呢。解决方法有两个并发访问,数据拷贝并发及多个线程都可以执行在同一段时间,不需要互相等待,主线程与用户互动,子线程加载cell所需要...原创 2019-01-30 21:50:44 · 1808 阅读 · 0 评论 -
Swift4.2中使用归档解档存储用户数据(使用运行时机制,获取属性列表)
我们先看看使用归档和解档需要遵守的几个条件条件:归档解档存储的对象必须是class,而不是结构体。使用结构体可以用协议方法去实现,请有意者自行查资料。该class需要继承NSObject,才可以使用KVC的方法,通过key拿到值或者通过key赋值。这是一个牺牲,不想继承的使用UserDafult方法去存储,毕竟Swift里面少点oc东西好如果想通过运行时一次获得所有属性列表,更方便的进行...原创 2019-03-16 19:00:51 · 1224 阅读 · 0 评论 -
Swift4.0中的闭包介绍
闭包英文名叫closure , 在swift开发项目中随处可见, 它的本质和函数差不多,但是却比函数使用方便,因为swift中可以通过上下文识别传入的值,我们就不用像使用函数一样把全部的值都定义一边!当一个函数返回值或着参数需要传入一段逻辑运算或操作,就可以考虑去使用闭包,在OC语言中我们称之为block ,在Java语言中我们称之为Lamdba,这种调用函数的方法,也叫做函数式编程下面看一...原创 2019-01-15 10:28:02 · 387 阅读 · 0 评论 -
Swift中的String和NSString 以及其编码方式的坑
String是swift语言中的字符类型NSString是Foundation框架下的一个核心处理字符串的类 OC随着Swift的快速更新 String 和 NSString 的差别越来越小了首先两者可以通过在值后面加as 进行桥接转换的 let str : String = "hello, world" as Stringlet str1 : NSString = str a...原创 2019-01-14 09:24:38 · 1935 阅读 · 0 评论 -
静态链表 C++
《数据结构》实验二: 线性表综合实验一.实验目的 巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题,巩固课堂学习。二. 实验内容1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作原创 2017-10-21 10:40:49 · 859 阅读 · 0 评论 -
网络请求get和post的小注意点
在nsurlconnection(现在使用nsurlSession)发送请求默认是get模式,但是如果你想使用post就要改请求体类型为可变类型NSMutableURLRequest如上图和下图区别 NSURLRequest没有http等属性NSURLConnectionget方法步骤(同步和异步)01 设置请求路径 02 创建请求对象(默认是GET请求,且已经默...原创 2018-08-03 13:12:37 · 292 阅读 · 0 评论 -
XMPP加载好友列表报错 'NSInternalInconsistencyException', reason: 'Invoked on incorrect queue'
打了个全局断点,发现进入到\XMPPCoreDataStorage.h的头文件的managedObjectContext方法的实现上面 上面有错误说明大概是这不是安全的context在线程里面(non thread safe)这时候发现原来在好友列表FetchedResultsController加载方法中,用错了该context错误:NSEntityDescription *en...原创 2018-08-28 15:48:52 · 346 阅读 · 0 评论 -
使用cocoapod导入xmpp框架 并使用
安装好cocoapod后 在终端输入 cd 输入你项目的文件夹名字(可以直接拖入)进入后 输入pod init 创建pod文件然后打开pod文件 输入 open -a Xcode Podfile然后开始编译Podfile文件 # platform :ios, '9.0'target 'Wechat(这里是你项目的名字)' do use_frameworks!pod...原创 2018-08-25 16:22:40 · 597 阅读 · 0 评论 -
对于深拷贝以及浅拷贝的理解 为什么String用copy修饰
一,两种拷贝的意思浅拷贝:也叫指针拷贝,拷贝后不会产生一个新的对象,指向原有对象同一内存地址,原有对象引用计时器加一,该对象会因原对象的改变而改变,实际内存并没有发生拷贝.深拷贝:拷贝后会产生一个新的对象,指向不同的内存地址,拷贝后对象不会受到原有对象的影响,实际内存发生了拷贝二,ios三种深浅拷贝:strong,copy和mutable copy创建一个Person的类1,...原创 2018-11-24 18:15:32 · 1199 阅读 · 0 评论 -
IOS pushVIewController失败
第一种情况:self.navigationController为空需要在AppDelegate.m文件里把window 的rootController设置为navigationController ,然后navigationController的子控件设置为你要使用跳转功能的view如下AppDelegate.m文件- (BOOL)application:(UIApplication ...原创 2018-12-05 10:01:28 · 2145 阅读 · 0 评论 -
Swift4.0数组的声明
总所周知,Swift是强类型语言 所以其数组中元素都必须是同一个类型的 而OC中的数组是可以存放任意Object-C对象的 如下 凡是OC对象都要加@NSString *str=@"字符串"; NSArray*OCArray =@[str,@1]; 下面来看看Swift数组的声明//普通声明方法let nums = [1,2,3,4,5]let string = [...原创 2019-01-11 13:01:17 · 877 阅读 · 0 评论 -
Swift中数组的使用 以及注意点
首先声明数组 //: Playground - noun: a place where people can playimport UIKitlet nums = [1,2,3,4,5]let string = ["l","h","j"]//数组中操作函数 返回值大多是optional 因为系统不知道这个数组是否为空let num1 =nums.firstlet str...原创 2019-01-11 13:53:25 · 365 阅读 · 0 评论 -
Swift中字典的介绍以及声明
//: Playground - noun: a place where people can play import UIKit//字典也叫map 映射//声明个空的字典var Dict0 = Dictionary<Character, Any>()Dict0.isEmpty //true //可以直接给字典添加一个key和一个valueDict0...原创 2019-01-11 21:11:24 · 1906 阅读 · 1 评论 -
对于深拷贝以及浅拷贝的理解 为什么String用copy修饰
一,两种拷贝的意思浅拷贝:也叫指针拷贝,拷贝后不会产生一个新的对象,指向原有对象同一内存地址,原有对象引用计时器加一,该对象会因原对象的改变而改变,实际内存并没有发生拷贝.深拷贝:拷贝后会产生一个新的对象,指向不同的内存地址,拷贝后对象不会受到原有对象的影响,实际内存发生了拷贝二,ios三种深浅拷贝:strong,copy和mutable copy创建一个Person的类1,第一种情况 ...原创 2019-04-04 08:17:23 · 574 阅读 · 0 评论