ios开发

前端开发模式的感想

懵懂的女人 提交于 2019-12-10 07:54:54
学习了vue.js开发后,脑海中一篇豁然开朗,为什么这样说呢?因为此时才明白原来独立的前端开发也是用的mvc模式,这与IOS和安卓开发很类似啊,并且个人觉得,同样是界面开发,前端开发工具和框架做的并不够好,因为它不具备ios和安卓那样的布局管理器,或许现在大公司有自己独立的布局管理器,但至少还没开源。 如果能像APP开发那样,不仅有布局管理器,通过拖拉进管理器中直接看到效果,还能界面化设置控件的属性,并且开发语言具备objective-c优美的语法结构,能够完全独立性的具备对象化的编程风格,那么对于开发者来说就达到了开发的简洁性。 这是一种趋势。 最近发现:阿里出的飞冰,Avue,Gen,Ant Design 以后补充 来源: CSDN 作者: xiaoxiao1777 链接: https://blog.csdn.net/xiaoxiao1777/article/details/103459640

iOS开发知识点装逼1:理解assign,copy,retain变strong

旧街凉风 提交于 2019-12-10 04:21:01
举个例子: NSString * houseOfMM = [[ NSString alloc ] initWithString : ' 装梵几的三室两厅 ' ]; 上面一段代码会执行以下两个动作: 1 在堆上分配一段内存用来存储@' 装梵几的三室两厅 ' ,比如:内存地址为 0X1111 内容为 ' 装梵几的三室两厅' , 2 在栈上分配一段内存用来存储 houseForWife ,比如:地址为 0XAAAA 内容自然为 0X1111 下面分别看下( assign , retain , copy ): 1.assign的情况: NSString * myHouse = [ houseOfMM assign ]; 此时 myHouse 和 hou seOfMM 完全相同,地址都是 0XAAAA ,内容为 0X1111 ,即 myHouse 只是 houseOfMM 的别名,对任何一个操作就等于对另一个操作。因此 retainCount 不需要增加.(同进同出,关系好,一把钥匙,给我拿着) 2.retain的情况: NSString * myHouse = [ houseOfMM retain ]; 此时 myHouse 的地址不再为 0XAAAA ,可能为 0XAABB ,但是内容依然为 0X1111 .因此 myHouse 和 houseOfMM 都可以管理' 装梵几的三室两厅

iOS开发-关于自定义控件很值得一看的文章(二)

…衆ロ難τιáo~ 提交于 2019-12-10 03:47:36
上一次我们一起做一个多段选择的自定义控件,顺便学习UIView的基本属性和方法。 链式响应原理 先简单普及一下响应链原理,我们可以简单地认为iPhone屏幕就是一个容器,我们看到的各种控件(UIView和UIView子类)都是屏幕(UIWindow)这个容器中的子容器,最外层的容器是应用委托(AppDelegate)的属性keyWindow,其实UIWindow也是UIView的子类。 这些容器的相互关系,就是我们最早学数据结构接触的多叉树关系,keyWindow就是这棵树的Root,其它它的子View都是分支。例如上面的例子,我们用xcode进行调试可以得到下图。注意在调试过程中,才有这排功能: 得到下面的层级结构 在我们的Demo里面,总共有两个 XXXSegmentView ,第一个 XXXSegmentView 有四个子 UILabel ,而他的 父View 是当前 ViewContoller 的主 View ,一个背景是纯白色的全屏 View 。 当 触摸事件 被iPhone硬件接收到时,一个链式的触摸信号就被开启了。最先接收到触摸事件的是 Root ,也就是我们应用程序的 keyWindow , keyWindow 再将触摸事件传递给它的一级子View们。这个传递过程不需要开发者用代码实现,如果开发者有需要重写传递,需要使用的是 UIView 的 - (nullable

iOS 开发小结之layoutSubviews调用

非 Y 不嫁゛ 提交于 2019-12-10 03:14:53
iOS 开发小结之layoutSubviews调用 iOS中的layoutSubviews是UIView的方法,该方法用于更精确的视图进行布局,可以在子类里重写这个方法。 开发过程中,了解layoutSubviews何时会被调用,从而可以熟悉uiview的重绘机制 参考网络资料,并进行验证,在此记录,希望大家一起探讨学习 测试定义UIView类TestView #import "TestView.h" @implementation TestView -(id)initWithFrame:(CGRect)frame{ self=[super initWithFrame:frame]; if (self) { NSLog(@"initWithFrame:%@",NSStringFromCGRect(frame)); } return self; } //重写layoutSubviews方法 -(void)layoutSubviews{ NSLog(@"layoutSunView %@", self); [super layoutSubviews]; } @end 测试代码 在视图控制器ViewController的viewDidLoad方法调用testX - (void)viewDidLoad { [super viewDidLoad]; // Do any additional

IOS开发网络篇之──ASIHTTPRequest下载示例(支持断点续传)

天涯浪子 提交于 2019-12-09 23:07:51
在工程中,我们会常常遇到需要下载的程序,比如下载在线音乐、下载图片等等,今天我将介绍一下利用ASIHTTPRequest的下载示例,支持断点续传,利用ASIHTTPRequest下载以及断点续传的原理在我的博客:http://blog.csdn.net/pjk1129/article/details/6575588中有具体的介绍,今天重点介绍如何实现,废话少说,开始正文: 一、创建网络请求队列 首先,创建网络请求队列,如下: ASINetworkQueue *que = [[ASINetworkQueue alloc] init]; self.netWorkQueue = que; [que release]; [self.netWorkQueue reset]; [self.netWorkQueue setShowAccurateProgress:YES]; [self.netWorkQueue go]; 二、创建存放路径 // 初始化 Documents 路径 NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; // 初始化临时文件路径 NSString *folderPath = [path stringByAppendingPathComponent:@"temp

iOS开发中Xcode编译错误 linker command failed with exit co

元气小坏坏 提交于 2019-12-09 19:11:05
iOS开发中Xcode编译错误 linker command failed with exit code 1 (use -v to see invocation) 的解决办法 发表于 2015/5/15 8:54:36 220 人阅读 分类: iOS objective-c 版权归Aaidong所有〜转载需声名〜 欢迎大家访问: http://blog.csdn.net/aaidong clang: error: linker command failed with exit code 1 (use -v to see invocation) 的Xcode错误调试,在iOS开发中算是一个最常见的错误。但是出现这个错误的情况却有好多种,以下总结希望可以对大家有点帮助。 情况1: 当想用某个第三方类库的时候(如SBJson),我直接把类库文件copy到工程目录里面,然后一编译就出现这样错误(并不是一定会出这样错误),开始以为是网上下载的类库本身问题,所以重新找类库或者其他方式将它添加进去,只要不出错就行,也一直没有深入了解根本问题,今天在给工程添加一个FMDB(SQLIte第三方类库)文件编译时又出现这种错误,一开始以为工程问题,但是新建工程后还是出现这个问题,经过网上查找,得到了解决办法; Undefined symbols for architecture i386: "_OBJC

iOS开发之XMPP开发环境的配置

南楼画角 提交于 2019-12-09 18:42:52
1、概述 XMPP是一种基于 标准通用标记语言 的子集 XML 的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。 2、环境搭建 下载xmppframework这个框架,框架下载链接如下: https://github.com/robbiehanson/XMPPFramework 首先要配置环境: 参考: https://github.com/robbiehanson/XMPPFramework/wiki/GettingStarted_iOS 1、 添加xmppframework框架到工程中 将下面的文件拖入工程中 其中Extension中的模块可以选择添加(只添加当前工程需要的模块) xmppframework设计是模块化的, 包括核心和扩展, 第三方开发人员可以方便的添加自己的扩展实现;同时开发人员 也只需要添加自己工程需要的模块. 一般扩展都会依赖一些额外的包, 要注意同时添加进去. 这里我选择添加如下模块 2 、添加framework 选择工程 --> 选择Build Phases -

【iOS】代码开发中bug管理:bugHD和bugtags

≡放荡痞女 提交于 2019-12-09 15:46:37
转一篇别人写的崩溃调试 ‍ ‍ iOS崩溃调试 http://www.cocoachina.com/ios/20160115/15009.html ‍ ‍ 一、原生代码处理 正常代码使用中的几种崩溃处理: 1.NSException收集崩溃信息 // 将系统提供的获取崩溃信息函数写在这个方法中,以保证在程序开始运行就具有获取崩溃信息的功能 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 将下面C函数的函数地址当做参数 NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler); return YES; } // 设置一个C函数,用来接收崩溃信息 void UncaughtExceptionHandler(NSException *exception){ // 可以通过exception对象获取一些崩溃信息,我们就是通过这些崩溃信息来进行解析的,例如下面的symbols数组就是我们的崩溃堆栈。 NSArray *symbols = [exception callStackSymbols]; NSString *reason = [exception

iOS中从零搭建Framework开发和调试程序

眉间皱痕 提交于 2019-12-09 14:26:55
1. 创建项目时,选择“Framework & Library” 2. 选择自己使用的时framework静态库还是动态库 2.1 动态库集成方式 2.2 静态库集成方式 3. 创建调试framework的*.workspace文件,将framework的工程文件拖拽到Demo的工程中 系统将自动创建workspace文件,自己将其命名成和Demo工程一样的名字即可(这里随意) 4. 关闭Demo工程,从新找到刚才创建的workspace文件打开 5. framework中创建类并对外引用, .h文件需选择public 然后在framework的.h文件中引用 6. demo中引用framework包, 将framework包show in finder 后,拖拽引用到demo中,注意是引用 7. 在demo中调用 运行是选择demo工程 剩下在framework刚创建的类中写更多的API 来源: CSDN 作者: MacleChen 链接: https://blog.csdn.net/yishengzhiai005/article/details/103456735

iOS开发之触摸事件以及手势

无人久伴 提交于 2019-12-09 13:10:17
iOS中的事件分为三类:触摸事件、加速计事件、远程控制事件。 只有继承了UIResponder的对象才能接收并处理事件,称之为“响应者对象”。 UIApplication、UIViewController、UIView都继承自UIResponder。 UIResponder内部提供的方法来处理事件: 触摸事件:touchesBegan、touchesMoved、touchesEnded、touchesCancelled 加速计事件:motionBegan、motionEnded、motionCancelled 远程控制事件:remoteControlReceivedWithEvent UIVeiw的触摸事件处理过程: /** * 当手指开始触摸view时调用 * * @param touches <#touches description#> * @param event <#event description#> */ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { NSLog(@"%s",__func__); } /** * 当手指在view上移动时调用 * * @param touches <#touches description#> * @param event <