
ios开发基础
MIKE-zi
单片机 MCU ECU C语言,汇编软件工程师,IOS objective-c swift 研发工程师 前端开发H5,javaScript,typescript 前端三大框架 vue , react , angular ,微信原生小程序开发,taro跨平台小程序开发
展开
-
IOS代理delegate的使用
IOS中代理的使用频率非常高,这次就介绍一下delegate的基本使用,首先代理分为委托方和代理方委托方 调用代理的地方Bviewcontroller.h/** 委托方第一件事,声明代理协议 */@protocol BViewControllerDelegate <NSObject>-(void)callbackVlaue:(NSString*)backValue;@end@interface BViewController : UIViewController/原创 2020-05-19 09:30:28 · 635 阅读 · 0 评论 -
No signing certificate 删除Provisioning Profiles
在开发中经常碰到这样的问题,这是配置文件里包含的证书,和你钥匙串里的证书没有匹配上,所以总是出现signing certificate没有找到的问题。说白了,就是在你的电脑里没有找到匹配描述文件(provisioning profiles)中证书的本地证书。 所以需要新配置一个描述文件,重新导入。并且重新在电脑装入证书。那么问题来了 如何删除呢?记住下面这个地址。 ~/Library/Mobil原创 2017-12-27 11:21:14 · 10100 阅读 · 0 评论 -
真机调试,Could not launch
在实际开发中经常需要用到真机调试,很多时候会提示你的拒绝登录 可以看到 通常情况下 这是因为你的证书和你的手机不匹配,可能你用的自己的手机,但是证书是公司的。公司证书不包含你这个设备。所以我们需要用自己的account去重新做真机调试。如下图点上自动管理签名,让系统自动创建development描述文件,和distribution描述文件 这时候会提示报错。OK,我们修改一下bundle原创 2017-11-04 17:19:40 · 2178 阅读 · 0 评论 -
企业证书打包ipa文件(图文详解)
在公司中,经常遇到使用企业证书打包ipa文件的情况,然后发给测试。通常不会让你自己去申请证书,合成profile文件等等。会直接发给你两个证书,两个描述文件。一个是开发者developer,一个是发布distribute.如下图: 首先点掉自动管理签名 automatically manage signing,然后选择对应的描述文件,也就是profile文件,如下图: 接下来在b原创 2017-10-19 16:14:35 · 11230 阅读 · 1 评论 -
Alert换行,根据特殊字符换行
在alert提示框中,需要根据分号换行,先看一种复杂的方法 NSString* str=@"123;456;789"; NSArray *arry=[str componentsSeparatedByString:@";"]; NSString *str2=[[NSString alloc]init]; for (NSString *mystr in arry) {原创 2017-09-21 16:43:17 · 2221 阅读 · 0 评论 -
UIAlertController显示内容左对齐
UIAlertController默认居中对齐。找了很多帖子,也没有看到怎么单纯的修改信息内容的左对齐。有的方法改完以后连title都靠左了。不符合我们的预期。直接上代码 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"更新提示!" message:tips preferredStyle:UIAl原创 2017-09-21 16:36:11 · 4518 阅读 · 0 评论 -
IOS指定APP程序入口
我们可以通过纯代码的方式指定appdelegate直接进入哪个页面。同时需要把target中的main删掉。target中的main对应着图形界面的灰色箭头 AppDelegate.m中写如下代码:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launch原创 2017-06-15 18:49:24 · 771 阅读 · 0 评论 -
属性字符串
属性字符串的使用: if(!_pwdButton) { _pwdButton = [UIButton buttonWithType:UIButtonTypeSystem]; NSMutableDictionary *dic = [[NSMutableDictionary alloc]init]; //设置下划线的颜色 dic[NSUnde原创 2017-06-23 15:03:06 · 298 阅读 · 0 评论 -
如何拿到tabbarcontroller,如何拿到主导航控制器
在实际开发过程中,我们通常会遇到这样的问题,在模型类中,或是点击手势的方法中,我需要拿到主导航控制器,通过它来实现带导航跳转,又或者在tabbar的某个页面中。要拿到主tabbar然后拿到其它也面的徽章值。下面我们来通过一段代码来看一下如何实现-(void)tapAction{ UserInfoTableViewController *vc = [UserInfoTableViewContro原创 2017-06-09 02:54:45 · 4729 阅读 · 0 评论 -
IOS SVN新建仓库 已有代码引入SVN版本管理
使用SVN进行代码管理,现在我们有服务器的路径,已经本地的代码一份。首先我们需要新建仓库 然后填写对应的信息,特别需要注意红色区域,不要写全路径。写域后的路径。SVN客户端会自己进行拼接 然后把我们的code import到服务器上,建立新的路径 可以看到在原有的路径上 加上了我们代码。然后在check out出来 然后就看到了我们熟悉的画面,打开路径,随便修改几行代码可以看原创 2018-01-02 17:30:38 · 775 阅读 · 0 评论 -
ios开发描述文件添加新设备
我们经常用到真机测试,再development证书中添加新的设备。 首先在devices中 添加上自己的设备,然后需要获取uuid号。起个名字,填上你设备的uuid号 然后到描述文件里,重新生成一下描述文件。 然后下载新的描述文件,就可以包含新添加的设备了原创 2017-12-27 16:42:57 · 7059 阅读 · 1 评论 -
快速创建数组字典 快速取值
创建数组,字典 NSArray *array = @[@"1",@"2",@"3",@"4",@"5"]; NSDictionary *dic = @{@"title":@"姓名/昵称",@"subTitle":@"请输入姓名"};创建数组套字典 _arrayTitle = @[@{@"title":@"姓名/昵称",@"subTitle":@"请输入姓名"},...原创 2019-06-13 15:20:35 · 720 阅读 · 0 评论 -
multiple commands produce
报错multiple ....infoplist 把多余的info.plist删除掉就可以解决问题啦原创 2018-11-27 14:09:11 · 5760 阅读 · 0 评论 -
IOS图解cookie使用流程
先看一张图,清晰的解释了cookie的使用流程,IOS开发中的代码也是根据这张图的流程来进行的。概括来说就是这样HTTP请求,Cookie的使用过程1、server通过HTTP Response中的"Set-Cookie: header"把cookie发送给client2、client把cookie通过HTTP Request 中的“Cookie: header”发送给server...原创 2018-11-21 15:07:03 · 430 阅读 · 0 评论 -
xcode断点看不到调试信息 变量值 字典值
今天在调试xcode的时候突然看不到调试信息,因为xcode又犯病了。自己查看一下,原来是在打包的时候修改了设置,产生了影响。可以看到网络请求中,断点已经拿到了返回的json。但是我们看一下调试信息所有应该拿到的信息都是Nil操作如下,product -- > scheme --> edit scheme,或者直接点击模拟器左侧图表,直接选中edit scheme可以正常拿到值了:...原创 2018-07-03 17:24:00 · 6131 阅读 · 0 评论 -
ios修饰词总结
ios总共有这些修饰词:assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwriteassign ( ARC/MRC )整型/浮点型等数据类型都用这个词修饰 .如果没有使用 weak strong retain copy 修饰 , 那么默认就是使用 assign 了.assign也可以修饰对象 , 只是对象的计数器不会+1we...原创 2018-04-18 14:37:09 · 651 阅读 · 0 评论 -
值传递与地址传递
作为开发人员,入门级的理解,就是值传递和地址传递的区别,这是C语言中的基础。今天通过一个oc的demo理解一下面向对象中的值传递和地址传递,首先定义一个自定义类MyFunction,定义值传递和地址传递的方法-(int)byValue:(int)x{ x++; return x;}-(int)byAddress:(int *)x{ (*x)++; retur...原创 2018-04-12 16:25:07 · 567 阅读 · 0 评论 -
jsonModel使用大全
jsonModel我们解析模型的时候经常用当然一个框架,关于jsonModel需要记住的经常用的其实只有很少的方法,总结一下,在json转模型的时候,只有两种,一种是字典转成模型类,一种是数组字典转为数组模型//数组转模型数组self.dataList = [ShopListBean arrayOfModelsFromDictionaries:dic[kMsg]error:nil];//字典转...原创 2018-04-08 17:23:35 · 3543 阅读 · 0 评论 -
Could not launch,has denied the launch request.
开发中经常遇到这样的问题,然而网上解决方案很少,有的也是所答非所问,今天研究了一下。 造成这种原因主要是,因为打生产包时将product->scheme->edit scheme->info->build configration设置成了release 所以在真机调试的时候,开发证书就无法登陆app。将这里改成debug即可解决问题。原创 2017-12-28 14:35:34 · 11585 阅读 · 1 评论 -
IOS三种动画总结
IOS的三种动画: 1 UIImage 实现动画2 UIImageView 动画 可以通过 isAnimating 判断动画是否正在运行3 UIView动画最简单的UIImage动画,输入名字会自动去找 0 1 2的系列图片 参考官方文档说明: “This method loads a series of files by appending a series of numbers to t原创 2017-05-20 01:19:01 · 345 阅读 · 0 评论 -
UINavigationController导航控制器总结
UINavigationController 导航控制器 1配置导航栏 (NavigationBar) 高度:算上状态栏 64个点 (状态栏 20 个点) 内容:通过navigationItem属性来完成设置 (navigationItem设置的是每个界面上导航栏中的内容) 左 left原创 2017-05-20 00:33:16 · 403 阅读 · 0 评论 -
IOS沙盒机制(sandbox)
首先我们来认识一下沙盒,沙盒就是每一个app对应的一块存储空间。 沙盒中有下列文件夹 Documents:文档 最常打交道的目录 iTunes会备份和恢复此文件夹的内容 Library/Caches : 缓存文件夹 用来保存缓存数据 不会备份和恢复 Library/Preferences:用户偏好设置 iTunes会备份和恢复此文件夹的内容 tmp:临时文件夹 存放临时文件 不会备原创 2017-05-14 01:43:38 · 538 阅读 · 0 评论 -
选项卡控制器(tabBarController)基础
选项卡控制器是几乎所有APP都会用到的控制器。主要涉及到,子控制器,title,徽章值,选中时图片,未选中时图片等。我们通过一个demo一起看一下可能用到的属性和方法,首先准备a b c三个子控制器。然后在appDelegate中写如下代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(N原创 2017-04-22 15:50:15 · 695 阅读 · 0 评论 -
IOS协议·IOS分类·IOS扩展(总结)
1.协议 1.1 是一种要求,或是一种规则 1.2 对应程序来讲,是只生成方法的声明,不实现 1.3 协议必须被某个类采纳,且在该类中给出协议中声明的方法函数体 1.4 对于采纳协议类的对象,可以和其它对象一样使用 1.5 协议可以被继承,包括多个父协议 1.6 协议可以被多重采纳下面一起看一下简单的demo理解协议的使用 定义协议MyProtocol.h@protocol MyPro原创 2017-04-26 22:07:58 · 736 阅读 · 0 评论 -
IOS内存管理,ARC,MRC,自动释放池(基础)
在IOS中内存管理几乎是每个人必须知道的一个知识点。首先我们总结一下MRC,再通过MRC来认识ARC以及自动释放池 1.MRC 1.1 淘汰的技术 1.2 引用计数(RC)是指alloc自动分配的一块儿存储空间,用于存储持有该空间的指针个数 1.3 使用retainCount方法查看RC的值 1.4 使用retain方法将RC加1 1.5 使用release方法将RC减1(修改RC值)原创 2017-04-26 21:25:43 · 837 阅读 · 0 评论 -
for和for in的区别
OC语言中,引入了for in循环下面我们来通过一个例子来看一下这两种循环有什么区别。还记得之前介绍过的快速将plist文件转换成数据模型类的那个例子吗?如果忘了可以看这篇微博回顾一下: http://blog.youkuaiyun.com/lee727n/article/details/72584379 在类方法中,我们分别使用两种for循环来实现,转换数据的功能。具体差异相比大家一看就懂+(NSArra原创 2017-05-20 22:24:00 · 1104 阅读 · 0 评论 -
警告框的使用
警告框通常被作为一个代码块使用,一劳永逸,只要写一次以后直接调用代码跨即可。通过一个模拟登陆的demo,看一下警告框会用到的所用控件。警告框也是一个controller。这点一定要注意封装显示alert控制器的函数-(void)showAlertView { //step1:创建UIAlertController的实例,创建实例时需要制定一个style参数,该参数写成Alert样式,则代表创建原创 2017-04-21 00:27:40 · 510 阅读 · 0 评论 -
通过属性反向传值
对于ios开发者来说,反向传值再熟悉不过了。我们通常使用,代理,通知,block进行反向传值,今天我们通过demo一起看一下属性反向传值。例如A界面跳转到B界面。再从B界面往A界面传值。关键点在于B界面如何拿到跳过来的那个A界面。 AViewController.h@interface AViewController : UIViewController//声明一个公开的属性 用于接收 B界面回原创 2017-04-21 00:10:42 · 485 阅读 · 0 评论 -
setNeedsLayout与layoutIfNeeded
三种方法都用于刷新子对象布局,解释分别如下:-layoutSubviews方法:这个方法,默认没有做任何事情,需要子类进行重写-setNeedsLayout方法: 标记为需要重新布局,异步调用layoutIfNeeded刷新布局,不立即刷新,但layoutSubviews一定会被调用-layoutIfNeeded方法:如果,有需要刷新的标记,立即调用layoutSubviews进行布局原创 2017-04-20 20:01:20 · 787 阅读 · 0 评论 -
IOS当前设备版本检测
在appdelegate.m中写如下代码,即可检测当前版本- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSString* phoneVersion = [[UIDevice currentDevice] systemV原创 2017-05-25 21:17:46 · 526 阅读 · 0 评论 -
IOS本地通知
由于IOS10以后更新了通知的类。所以我们必须要学会判断当前设备的版本,ios10以前的设备仍然使用以前的写法。ios10以后使用新写法。如果还不会判断版本的。请参考上一篇微博: http://blog.youkuaiyun.com/lee727n/article/details/72757831 发送本地通知代码及注释如下:- (void)viewDidLoad { [super viewDidL原创 2017-05-25 21:22:15 · 261 阅读 · 0 评论 -
navigationBar隐藏,toolbar隐藏
首先参考导航控制器基础,我们继续实现隐藏效果 http://blog.youkuaiyun.com/lee727n/article/details/72567569 实现点击隐藏,再点击显示的coding-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //隐藏导航条// self.nav原创 2017-05-20 00:36:18 · 1362 阅读 · 0 评论 -
scrollview和pageControl
我们通过scrollview和pageControl可以实现一个欢迎页面。下面我就就来一起可以下设置两个空间,以及控件之间如何实现通信。 首先我们需要定义两个空间,以及遵守delegate协议@interface ViewController () <UIScrollViewDelegate>@property(nonatomic)UIScrollView *scrollview;@prope原创 2017-05-20 00:16:59 · 309 阅读 · 0 评论 -
MVC间的通信(附代码)
首先我们解释一下MVC分别是什么 M(Model) 应用程序的核心,用于处理应用程序数据逻辑部分,例如JSON解析的模型类 V(View) 处理应用程序数据的显示,也是是视图层 通常依据Model创建 C(Controller) 处理用户的交互,控制器层 从视图读取数据,控制用户输入,并向模型发送数据 下面根据斯坦福的一张截图课件我们来分析一下,MVC间的通信 总结C对M:原创 2017-05-10 01:55:29 · 888 阅读 · 0 评论 -
KVO&KVC
KVO和KVC的区别,这是一道面试经常会问到的题。其实这两个根本就没有什么关系。下面我们来通过一个demo来认识一下KVC和KVC,同时通过这个demo来看一下Model层对Controller层之间的通信。Notification和kvo 自定义model层,person类@implementation Person- (instancetype)init{ self = [supe原创 2017-05-10 02:10:25 · 496 阅读 · 0 评论 -
IOS版本检测,更新版本
通过UserDefault来实现版本更新,版本检测,即如果更新到了新版本,用户第一次运行,播放介绍全新特性的界面 代码如下: 在appdelete.m didFinishLaunchingWithOptions方法中添加- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictio原创 2017-05-18 11:18:04 · 420 阅读 · 0 评论 -
IOS获取系统相册图片
获取系统相册图片,首先遵守代理协议@interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate>@end添加点击事件 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {原创 2017-05-17 23:12:16 · 978 阅读 · 0 评论 -
IOS多选图片(可编辑)
在IOS中调用系统图片通常是多选图片。可以先看一下系统图片选择器介绍: http://blog.youkuaiyun.com/lee727n/article/details/72454687 接下来我们来看一下多选图片 我们需要借助一个三方PhotoBrowser,下面的程序是我将demo程序中,分解出来的最简单且最常用的基础功能。多选图片,并且存成到数组中 将3放文件放入mainbundle 导入原创 2017-05-18 00:01:02 · 1399 阅读 · 0 评论 -
如何拿到storyboard
很多时候我们需要通过storyboard来拿到指定页面,下面我们看看常用的两种方法拿到storyboard。第一种比较常用,但是有些时候,在有些页面的时候。我们拿不到appdelegate。所以就需要直接拿到storyboard。通过第二种方法,通过Main拿到storyboard+(PlayingViewController *)sharePlayingVC{ if(_vc == n原创 2017-05-08 20:12:29 · 610 阅读 · 0 评论 -
IOS 多种反向传值对比(代理,block,通知)
IOS中常用的3种传值方法,主要是是用于反向传值,分别为block,代理,通知。对于这三种传值大家一定要非常熟悉,尤其是对于初学者。今天写了一个demo讲3种传值放到一起。方便大家自己去体会到每种传值的特点。优缺点等。首先我们需要两个页面。分别为UIVIEWCONTROLLER.分别为AViewController和BViewController,A是首界面。我们需要把B界面的输入框内容传到A界面。原创 2017-03-11 22:23:55 · 458 阅读 · 0 评论