ios开发

iOS开发之字符串去掉首尾空格换行

五迷三道 提交于 2020-01-08 12:41:43
(1)去掉字符串首尾空格的方法: NSString *str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; (2)去掉字符串首尾换行的方法: NSString *str = [str stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]; (3)去掉字符串首尾空格和换行的方法: NSString *str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; (4)替换字符串内所有空格的方法: NSString *str = [str stringByReplacingOccurrencesOfString:@" " withString:@""]; (5)替换字符串内所有空格的方法: NSString *str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 来源: https://www.cnblogs.com/hecanlin/p/12165846.html

【BuglyIOS干货分享】iOS内存管理:从MRC到ARC实践

筅森魡賤 提交于 2020-01-07 10:34:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处。 对于iOS程序员来说,内存管理是入门的必修课。引用计数、自动释放等概念,都是与C语言完全不同的。搞明白这些,代码才有可能不 crash 。然而就是这么牛逼的内存管理,着实让我这个从 C 转过来的老程序员头疼了一段时间。 [C++ 程序员的迷惑和愤怒] iOS 内存管理的核心是引用计数。与众多五年甚至更多以上开发经验的程序员一样,笔者当初是从 C/C++转到的 OC,接触到 MRC。当时遇到最头疼的问题就是:为什么那么多 release?到底什么地方会 release?同样初始化一个字符串的两个方法为什么不同?上边一个不需要调用 release,后边一个就需要调用 release? NSString * str1 = [NSString stringWithFormat:”qqstock“]; NSString * str2 = [[NSString alloc] initWithData:recvData encoding:NSUTF8StringEncoding]; 再加上一个属性赋值与成员变量赋值,一个导致计数器加一,一个就不会!真他妈奇葩了!

iOS开发UI篇—核心动画(转场动画和组动画)

南笙酒味 提交于 2020-01-06 05:01:18
所谓的动画组就是将一些动画组合起来给layer使其的动画更丰富灵活。 它很简单,就是为其animations属性赋值一个动画数组。 [cpp] view plain copy - ( void)demoAnimationGroup { static NSString * const kCAPostionKeyPath = @ "position"; static NSString * const kCAOpacityKeyPath = @ "opacity"; static NSString * const kCARotationKeyPath = @ "transform.rotation"; static NSString * const kCAScaleKeyPath = @ "transform.scale"; UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:_demoView.layer.position]; [path addCurveToPoint:CGPointMake(260, 400) controlPoint1:CGPointMake(0, 460) controlPoint2:CGPointMake(320, 0)]; //路径动画 CAKeyframeAnimation

iOS开发~CocoaPods使用详细说明

懵懂的女人 提交于 2020-01-05 17:40:59
一、概要 iOS 开发时,项目中会引用许多第三方库,CocoaPods( https://github.com/CocoaPods/CocoaPods )可以用来方便的统一管理这些第三方库。 二、安装 由于网上的教程基本都大同小异,但细节之处还不是很完善,所以借机会在这里补充下: 注:要使用CocoaPods,那就要下载安装它,而下载安装CocoaPods需要Ruby环境 1、Ruby环境搭建 当前安装环境为Mac mini 10.8.5。Mac OS本身自带Ruby,但还是更新一下保险,因为我第一次安装在没有更新Ruby的情况下就失败了。 a 查看下当前ruby版本:打开终端输入 ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby) [objc] view plain copy print ? ritekiMac-mini:PodTest lucky$ ruby -v ruby 1 .8 .7 ( 2 0 1 2- 0 2- 0 8 patchlevel 3 5 8) [universal-darwin 1 2 .0] ritekiMac-mini:PodTest lucky$ b 更新ruby 终端输入如下命令(把Ruby镜像指向taobao,避免被墙,你懂得) gem sources --remove https://rubygems.org/

iOS开发~CocoaPods使用详细说明

元气小坏坏 提交于 2020-01-05 17:39:20
一、概要 iOS开发时,项目中会引用许多第三方库,CocoaPods( https://github.com/CocoaPods/CocoaPods )可以用来方便的统一管理这些第三方库。 二、安装 由于网上的教程基本都大同小异,但细节之处还不是很完善,所以借机会在这里补充下: 注:要使用CocoaPods,那就要下载安装它,而下载安装CocoaPods需要Ruby环境 1、Ruby环境搭建 当前安装环境为Mac mini 10.8.5。Mac OS本身自带Ruby,但还是更新一下保险,因为我第一次安装在没有更新Ruby的情况下就失败了。 a 查看下当前ruby版本:打开终端输入 ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby) [objc] view plain copy print ? ritekiMac-mini:PodTest lucky$ ruby -v ruby 1 .8 .7 ( 2 0 1 2- 0 2- 0 8 patchlevel 3 5 8) [universal-darwin 1 2 .0] ritekiMac-mini:PodTest lucky$ b 更新ruby 终端输入如下命令(把Ruby镜像指向taobao,避免被墙,你懂得) gem sources --remove https://rubygems.org/

iOS-直播开发(开发从底层做起)

依然范特西╮ 提交于 2020-01-05 16:25:07
一直在忙, 也没写过几次播客! 但一直热衷于直播开发技术, 公司又不是直播方向的, 所以就年前忙里偷袭研究了一下直播开发, 然后翻阅了很多大神的技术博客等, 写了一个简单的Demo, 又根据网上大神们的技术博客搭建了简易的本地RTMP服务器! 由于时间问题, 没来记得来记录下来, 目前demo 只完成了直播音视频采集, 转码, RTMP协议推流, 和本地RTMP简易服务器 推流这一环节, 拉流还没来得及写, RTMP流的播放用的是VLC, 来实现视频流的播放的! 网上有各种大牛写的播客, 都很好的, 但我写这篇播客的目的就是, 想记录一下当时的思路, 还有分享出来, 让各位大神指点一下不足之处, 来完善这个小项目! 表达一下我对直播开发的热爱哈哈...如果有幸能给大家帮些忙, 我倍感荣幸! 好, 废话不多说, 接下来我们直接开始! 代码链接: Github: https://github.com/jessonliu/JFLivePlaye 技术部分------ ⬇️ 脑涂: ![ 直播思维导图.png ] 视频直播的大概流程就上脑涂上所画的, 还有一些没列出来, 比如, 聊天, 送礼, 踢出, 禁言, 等等一系列功能, 但本文只是针对视频直播的简单实现! 下边来说一下以下的几个点和使用到的类(后边会附上demo, 里边还有详细的备注) 1. 音视频采集 音视频采集,

IOS开发之tableView的刷新以及property属性的用法

坚强是说给别人听的谎言 提交于 2020-01-05 02:31:30
1.tableView的刷新 1> 数据刷新的总体步骤 * 修改模型数据 * 刷新表格(刷新界面) 2> 刷新表格(刷新界面)的方法 * 全局刷新(每一行都会重新刷新) - (void)reloadData; * 局部刷新(使用前提: 刷新前后, 模型数据的个数不变) - (void)reloadRows:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; * 局部删除(使用前提: 模型数据减少的个数 == indexPaths的长度) - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; 2.@property属性的用法 * weak(assign) : 代理\UI控件 * strong(retain) : 其他对象(除代理\UI控件\字符串以外的对象) * copy : 字符串 * assign : 非对象类型(基本数据类型int\float\BOOL\枚举\结构体) 来源: https://www.cnblogs.com/xiexianchan1991/p/4735959.html

iOS开发-OC、C、C++ 混编

。_饼干妹妹 提交于 2020-01-04 21:39:02
OC里面的有三大类文件.m/.h(OC),.c/.h (C),.cpp/.hpp(C++)。 一、在OC中调用C或者C++ 如果是.m文件,可以用OC和C的代码; 如果是.mm文件,可以用OC和C和C++的代码; .m 和.mm 的区别是告诉编译器在编译时要加的一些参数。.mm也可以命名成.m,手动加编译参数。 二、在C++中调用OC PIMPL (Private Implementation, 私有实现) 不要在C++中依赖ARC,最好自己手动管理。 遇到的问题: 1,尝试在同一个文件中调用oc、c、c++,ld: symbol(s) not found for architecture x86_64。 问题出现的原因和OC无关,在c++中引用c的头文件,需要用extern "C"{}把代码包括起来。详细原因见下: http://stackoverflow.com/questions/9334650/linker-error-calling-c-function-from-objective-c 2,在c++中调用OC时遇到了问题,在.cpp文件中调用OC的类,在Foundation处报错。 问题出现在.cpp文件用的是纯粹的c++编译。 解决方案:把实现放在.mm。 learnCplus(1, 2); //在OC中使用c learnCplusplus(1, 2); /

iOS开发-UITabBarController

一曲冷凌霜 提交于 2020-01-03 17:58:35
- (void)viewDidLoad { [super viewDidLoad]; //创建TAB的VC UIViewController* vc1 = [[UIViewController alloc] init]; homeVC.view.backgroundColor = [UIColor yellowColor]; UIViewController* vc2 = [[UIViewController alloc] init]; canteenVC.view.backgroundColor = [UIColor orangeColor]; UIViewController* vc3 = [[UIViewController alloc] init]; cartVC.view.backgroundColor = [UIColor redColor]; UIViewController* vc4 = [[UIViewController alloc] init]; mineVC.view.backgroundColor = [UIColor orangeColor]; self.viewControllers = @[ [self setTabBarVC:@"首页" image:@"h" selImage:@"h_selected" vc:vc1], [self

iOS开发(OC)中的命名规范

放肆的年华 提交于 2020-01-03 01:28:43
开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之。   正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结构也算清晰,因为我一直以来都是代码看的多写的多,但是总结的比较少,知识经常不成体系。以后多花点时间把自己的经验和学习知识加以总结一下吧,这样有利于去指导新人,也更有利于加深自己的知识认知。今天就从代码规范入手总结一下iOS开发中好的编码规范吧。我们在开发中看别人的代码的时候经常会去抱怨至少内心里骂娘,其实别人看你的代码也许也在抱怨你,我更深刻的意识到:高手和新手有代码规范水平的差异,高手与高手之间有变成思想的差异,新手之间就在模仿中就更加凌乱了。因此团队开发一定要有很好的且统一的编码规范,这样才有利于团队开发与快速维护。今天先写第一篇:《iOS开发(OC)中的命名规范》 命名原则 1.一般性原则: 可读性高(简洁且清晰)和防止命名冲突(通过加前缀来保证)。   Objective-C 的命名通常都比较长, 名称遵循驼峰式命名法. 一个好的命名标准很简单, 就是做到在开发者一看到名字时, 就能够懂得它的含义和使用方法. 另外, 每个模块都要加上自己的前缀, 前缀在编程接口中非常重要, 可以区分软件的功能范畴并防止不同文件或者类之间命名发生冲突, 比如相册模块(PhotoGallery