关闭

iOS 开发中你是否遇到这些经验问题(一)

标签: ios
268人阅读 评论(0) 收藏 举报
分类:

前言

小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时也是提高开发经验的渠道!

1.既然有问题我们该怎样解决 ?

首先大部分人都会去百度搜索来解决问题, 谁都不例外, 可是百度这东西会有很多误解, 甚至误人子弟, 同时解决问题的效率也不是很高, 如果是技术问题可以去:

  • Google 简单来说比百度搜索的答案相对要多,要更准确效率更高, 建议使用英文搜索
  • Stack Overflow 一个与程序相关的IT技术问答网站, 简单来说工作中的70%问题在这里都能解决

搜索是解决问题的一种办法, 那么剩余30%的问题还是需要自己独立去解决, 那么有人会问有没有能提高独立解决问题的办法呢 ? 比如: 积累所遇到的崩溃信息, 学会查看崩溃信息, 查看官方文档的技巧等等) 本文暂时不会详解, 有时间的话需要单独写一篇文章来探究如何高效的解决崩溃问题!

2.用断点调试崩溃问题的小技巧
  • (1)如果当前断点指向内存, 那么就是初始化时分配内存时有问题
  • (2)添加全局断点的问题:
    112353624-6e6f508188bfe97a

    添加全局断点.png

    全局断点的目的就是当产生异常崩溃能够停留在异常或者崩溃发生的地方而不是跳转到主函数

122353624-9ea1209e52aaee04

崩溃断点.png

但是添加全局断点后会跳转到主函数, 会遇到如上图的情况, 那么80%的问题就是storyboard或者xib拖线没有及时清理掉坏线如下图:

132353624-5c4a15bb16ed6d32

拖线没有清除.png

这条Button的连线在代码中已经删除了不用了, 但是没有及时清理掉,所以会造成崩溃!

3.NSString使用stringWithFormat拼接的相关知识
  • 保留2位小数点
  • 0补全的方法
  • 字符串中有特殊符号%怎么办
  • 字符串中有特殊符号"怎么办
4.判断是否为gif/png图片的正确姿势

首先我们先想想如果是你, 你会怎么去判断一个从网络获取的图片URL是否为gif图片, 是否是这样呢 ? 如下:

什么难道你不是这么判断的么 ? 哦~ 我懂了, 难道你使用字符串截取来判断的吗 ? 哈哈开个玩笑!
以上判断看似是可以的,但是这不严谨的, 在不知道图片扩展名的情况下, 如何知道图片的真实类型 ? 其实就是取出图片数据的第一个字节, 就可以判断出图片的真实类型那该怎么做呢如下:

其实图片数据的第一个字节是固定的,一种类型的图片第一个字节就是它的标识, 我们来调用一下这个方法:

5.Button禁止触摸事件的2种方式

大家应该知道, 有很多需求是在规定内不允许点击Button, 并且让用户知道这个按钮是不可以点击的,那我们应该这样设置:

但是又有一个需求是既不能点击也不要改变Button颜色:

6.跟xib一起走过的坑

(1) 如果在xib中有一个控件, 已经明确设置尺寸了,输出的frame也是对的, 但是显示出来的效果不一样(比如尺寸变大了), 如果是这种情况一般就是autoresizingMask自动伸缩属性在搞鬼! 解决办法如下:

(2)如果你的控制器的view是用xib创建的, 当你拿到view的尺寸是不准确的, 在这里我们就需要通过[UIScreen mainScreen].bounds拿到尺寸, 但是storyboard的尺寸是准确的!

7.你是用什么方法设置图片圆角?

首先你是否是这么设置的:

或者是在xib&storyboard中点击要设置圆角的图片:

142353624-cce526062c2d783a

xib或者storyboard设置圆角.png

在此之后建议大家尽量不要这么设置, 因为使用图层过量会有卡顿现象, 特别是弄圆角或者阴影会很卡, 如果设置图片圆角我们一般用绘图来做:

这个方法就是设置圆角图片, 效率很高, 不会造成卡顿现象, 大家要把这个方法单独放到分类中使用

8. ## 与 @# 在宏里面该怎样使用
  • ##的使用, 首先我们添加一个宏

    ##是连接的作用, 即当使用上面的宏会把weak与输入的type值连接起来如下图:

    149353624-51d711f56b8df62b

    ## 的使用.png
  • #的意思是紧跟着它的后面的标识符添加一个双引号""
  • @#的使用, 我们添加一个普通的宏:

    强调下我只是随便定义一个宏来做示例, 以上代码是正常的使用,我们在来看看添加@#是怎么使用的:

    我们可以看出来 LRToast(温馨提示);LRToast(@"温馨提示");区别, 也就是说@#可以代替@"" 那么我们以后开发就省事了, 不用再添加@""了!
9.自动布局Autolayout口诀

storyboard或者xib使用自动布局, 如果控件比较多而且布局复杂, 一不小心就会报一大堆错误警告, 那么这个口诀是必备良药, 跟着这个口诀走再也不用害怕Autolayout恐惧症了 !

152353624-78f21c084c43ee8a

Autolayout.png

按照如上图从上到下顺序读就是当前这条约束的状态
First Item(登录按钮的顶部)Relation(等于) Second Item(父类View的顶部) Constant(加上 10) Multiplier(乘以 1)

10.App迭代开发版本号的规则

在iOS中简单的版本号是怎样管理的呢? 首先我们的App第一版本首次上线, 比如以1.0.0为首次上线的版本号:

1.上线后突然发现一个严重的Bug那我们就要修复更新版本, 此时我们的版本号为1.0.1
所以说如果修复Bug或者优化功能, 我们只修改叠加第三位数字, 其他不变

2.如果有了新的需求, 在原来的基础上增加了一个新功能, 那么我们的版本号变为1.1.0, 需要清空第三位数字为0, 来叠加修改第二位数字

3.如果App需求功能大改, 更新量非常大, 那我们的版本号变为2.0.0, 需要叠加修改第一位数字, 清空其他数字为0

喜欢的小伙伴请点赞一下吧!如果有不足的地方,请大家及时帮忙纠正与补充,顺便谈谈你的建议!
相关文章: iOS开发中你是否遇到这些经验问题(二)

0
0
查看评论

iOS 开发中你是否遇到这些经验问题(一)

前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时也是提高开发经验的渠道! 1.既然有问题我们该怎样解决 ? 首先大部分人...
  • baidu_33793758
  • baidu_33793758
  • 2016-08-23 10:20
  • 159

iOS 开发中你是否遇到这些经验问题(一)

小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时也是提高开发经验的渠道! 1.既然有问题我们该怎样解决? 首先大部分人都会去百度搜索来解决问题...
  • huangmindong
  • huangmindong
  • 2016-08-22 13:27
  • 543

iOS 开发中你是否遇到这些经验问题

前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时也是提高开发经验的渠道! 1.既然有问题我们该怎样解决 ? 首先大部分人都会去百度搜索...
  • qq_30513483
  • qq_30513483
  • 2016-08-08 08:39
  • 408

iOS 开发中你是否遇到这些经验问题(二)

来源:判若两人丶 链接:http://www.jianshu.com/p/a924b4a17686前言:在上一篇文章中我相信帮助了很多的小伙伴, 那么在这篇文章希望还能帮助到你! 相关文章: iOS开发中你是否遇到这些经验问题(一)1.在Block中一起使用weakSelf与strongSel...
  • baidu_33793758
  • baidu_33793758
  • 2016-08-24 18:45
  • 181

iOS 开发中你是否遇到这些经验问题(二)

授权转载,作者:判若两人丶(Github) 前言: 在上一篇文章中我相信帮助了很多的小伙伴, 那么在这篇文章希望还能帮助到你! 1.在Block中一起使用weakSelf与strongSelf的含义 我们都会声明一个弱引用在block中使用, 目的就是防止循环引用, 那么we...
  • wqt925497045
  • wqt925497045
  • 2016-08-25 18:04
  • 136

java面试中遇到的问题

此博客持续更新中,欢迎大家指正,提供答案 1.Struts2的核心拦截器是什么? FilterDispatcher也是Struts2的核心技术。 FilterDispatcher核心控制器执行以下操作: (1)读取静态数据信息 (2)决定需要转发或者导航的Action配置 (3)创建Action的C...
  • yin767833376
  • yin767833376
  • 2016-05-12 20:50
  • 1365

开发过程中遇到问题该怎么办?

开发过程中遇到问题了怎么办日常开发过程中,总会遇到问题,那么遇到问题该怎么办呢?   首先我们把问题分成大的两类:业务问题、技术问题。一、业务问题这类问题一般跟你的需求和设计相关。大致分下列情况:1、需求不明确、自己对需求存在误区和不理解 2、对需求有不同见解的地方或者需要改进,...
  • shijing266
  • shijing266
  • 2017-05-05 16:42
  • 1656

android开发中遇到的问题汇总【七】

更多问题请关注 [android开发遇到问题点滴](https://github.com/ayyb1988/android-issues)
  • u011570979
  • u011570979
  • 2015-05-19 12:37
  • 2356

游戏开发中遇到的一些问题

来新公司做游戏开发已经差不多有两年的时候,期间遇到各种问题,作此纪录,以免重复犯相同的错误。   1:游戏后台采用的mysql数据库,大部分的游戏信息用blob字段表示,在blob信息里加上版本号,这样可以动态修改游戏信息,而不需要频繁的修改数据结构。随着游戏的来断开发,游戏内容越来越多,...
  • tanlijun37
  • tanlijun37
  • 2013-08-09 10:37
  • 1119

iOS开发-做项目中遇到的坑

最近项目中遇到的问题和实际的解决方案的分享,还有一款小插件的分享,希望对遇到同类问题的作者有所帮助。 问题一 使用WebView加载网页时候进行加载时候,如果出现网络请求缓慢,并且使用MBProgressHub进行动画处理,会出现以下情形: 情形一:使用[MBProgressHub showMess...
  • Zhai19931004
  • Zhai19931004
  • 2016-05-20 10:44
  • 424
    个人资料
    • 访问:36335次
    • 积分:538
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:78篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论