【开发积累】
文章平均质量分 86
黑萝卜不黑
我在成长……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Xcode打开项目工程变成了My Mac的问题
My Mac问题:当我们copy项目工程到另一个文件夹或是另一台Mac上时,再次用Xcode打开工程时发现我们们无法选择真机或是模拟器运行项目,Xcoed把它识别成了My Mac 工程了,这时候target的图标也是设置样式的图标,Device只有My Mac 。例子如下图:解决方法:1、关闭Xcode,找到项目工程文件目录,然后找到该项目的*.xcodeproj文件 2、右击 .xcodepro原创 2017-09-08 11:26:56 · 2977 阅读 · 0 评论 -
编译报错:Undefined symbols for architecture arm64: "_OBJC_CLASS_$_类名", referenced from
报错: Undefined symbols for architecture arm64: “_OBJC_CLASS_$_类名”, referenced from : Objc-class-ref in 类名.o 这个报错提示我们,在编译项目的时候某个类没有找到它引用的类,致使编译的时候报错。根据该提示我们找出某个在编译的时候缺失的类.m文件,将其引入进来,在使用命令 shift + comm原创 2016-11-08 11:46:15 · 15760 阅读 · 0 评论 -
iOS项目拆分:数据本地持久化(4)
Core Data是有苹果官方提供的框架(#import <CoreData/CoreData.h>),实现数据持久化存储。Core Data实际上是将数据库的创建、表的创建、对象和表的转换等操作封装起来,极大的简化了操作。使用Core Data进⾏数据库存取不需要手动创建数据库,创建数据库的过程完全由Core Data框架自动完成,使用者需要做的就是把模型创建起来。Core Date与SQLite原创 2016-09-21 10:38:39 · 2909 阅读 · 2 评论 -
自定义UILabel,设置内边距
系统的UILabel附上文字后后自动给出一定的内边距,按照UI的设计图需求,标签附着文字后不能留有边距,只能自己自定义一个没有内边距的UILabel。OC版本#import <UIKit/UIKit.h>IB_DESIGNABLE@interface InsetLabel : UILabel@property (nonatomic, assign) IBInspectable CGFloat原创 2016-10-19 17:57:14 · 3810 阅读 · 0 评论 -
Deep Linking打破APP信息孤岛
Deep Linking(深度链接):关于Deep Linking介绍我在之前的文章做过简单介绍,可以通过点击 深度链接 浏览。Mobile Deep Linking (移动深度链接):即绕过被链接app的首页直接链接到分页的链接方式,当用户点击链接时,会跳转到一个已安装应用的链接指定的具体内容页面。Deep Linking 的原理与实现(针对iOS版本)一、URL Schemes 1、沙盒机制原创 2016-11-25 11:13:46 · 1650 阅读 · 0 评论 -
UIImagePickerController改变statusBar颜色的问题
使用UIImagePickerController获取图库照片后,发现statusBar的颜色改变了原有的颜色,需要重新设置,以便配合整体界面设计。尝试了一些网络上的解决方案,具体方式如下:(方法4和5亲测有效,推荐使用)方式1:UIImagePickerController继承UINavigationController,在调用UIImagePickerController的地方,加上如下代码:-原创 2016-12-08 12:03:59 · 2227 阅读 · 0 评论 -
Deep Linking(深度链接)
Deep Linking(深度链接)补充–Deep Linking打破APP信息孤岛(Deep Linking打破APP信息孤岛)这里讲的Deep Linking(深度链接),在PC开发中是指指向首页的链接或是指向具体内容页的链接。在移动端开发中deep linking 则是指app 在 handle 特定 URI 的时候可以直接跳转到对应的内容页或触发特定逻辑,而不仅仅是启动 app。深度链接好处原创 2016-08-10 16:07:44 · 8170 阅读 · 0 评论 -
苹果账号打包发布APP流程详解
账号类型 苹果开发者账号分为个人、公司、企业、和教育四种账号类型。个人开发者账号(Individual)包含免费账号和付费账号。免费账:申请免费账号就可以从App Store下载软件;付费账号:99美元一年,供个人开发使用。个人账号只能有一个开发者。100个苹果的iOS设备UDID测试。注:一般也有公司使用个人付费账号公司账号(Company/Organization):99美元一年,可以定义原创 2017-03-14 14:41:39 · 11650 阅读 · 1 评论 -
Xcode编译报错:Interface Builder could not open the document
Xcode报错信息:Interface Builder could not open the document “*.xib” because it does not exist. 解决办法:选中项目-Target-Build Phases-Compile Sources,删除相应不存在的的文件,如下图原创 2017-03-17 11:34:37 · 2039 阅读 · 0 评论 -
iOS如何正确清空数组
NSArray以及NSMutableArray(不可变数组和可变数组)是OC中的两种数组,在开发中,经常会遇到需要清空数组的需求,这时候大多数人会下意识的想到nil这个方法。即使 array = nil,这样不仅清空了数组,同时也把memory释放了,这个object(对象)就不存在了,并不提倡这种方式(注释:你在离开这个ViewController的情况下)。 使用nil将会删除整个数组,而使用原创 2016-08-15 18:26:15 · 13786 阅读 · 4 评论 -
iOS修改Xcode工程名称
接手了一个转了三手的外包工程,被坑的那叫一个悲惨。(题外音:不知道这个工程的那位前辈初建工程的时候中文命名,注意这里是中文命名,后期该工程新增了许多需求,其中一项是百度地图,用过百度地图SDK的朋友应该知道,工程名称需要时是英文才可使用,悲催的只能更换工程名称。这里告诉你,要是项目不急可以考虑重建。)。更换名称需要注意到的问题:1、虚拟文件夹和实体文件夹 2、plis文件 3、第三方的link库原创 2017-06-26 16:03:36 · 1116 阅读 · 0 评论 -
iOS控件NSTimer计时器
先熟悉一下NSTimer(定时器)的常用属性// 启动-(void)fire ;// 停止(注:这个是唯一一个可以将计时器从runloop中移出的方法。)- (void)invalidate; NSTimer为了取消内存以及和循环引用的问题 ,在NSTimer停止的时候(invalidate)要做的处理// 停止 从Runlop中移除[timer invalidate];// 放在内存溢出转载 2016-09-29 13:07:07 · 1364 阅读 · 0 评论 -
AFNetworking3.0以上版本的封装--封装代码(升级版)
这之前写过一篇《AFN3.0以上版本的二次封装》,主要为当时公司的项目服务,写的针对性比较强。做过几个不同的项目后,对网络请求的理解更加清晰了,因此写下了这篇升级版。之前那篇文章写过的一些细下模块,这里就不做太多的重复介绍了,这里主要写下大众适用模块。封装AFN目的:1、降低工程代码耦合度,提高网络请求的内聚度。(比较官方的说法,主要是直接使用显得太low) 2、降低代码工作量,统一管理调用。(懒原创 2017-10-20 11:46:24 · 3050 阅读 · 1 评论 -
iOS 架构模式 -- MVC
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。架构模式(Architectural Pattern),也叫架构风格,一个架构模式描述软件系统里的基本的结构组织或纲要。架构模式提供一些呈先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。一个架构模式常常可以分解成很多个设计模式的联合使用。MVC模式就属于架构。MVC全名是Mo原创 2017-10-30 13:11:17 · 716 阅读 · 0 评论 -
iOS-UITableViewCell自定义分割线
在最近的自定义UITableViewCell中遇到分割线间距问题,找了几种解决方法:设置UITableViewCell分割线间距方法一:// 系统版本大于7.0TableView.separatorInset = UIEdgeInsetsMake(0,0, 0, 0); //top left bottom right 上左下右边距相同 TableView.原创 2018-01-16 09:21:58 · 1738 阅读 · 0 评论 -
iOS APP转让
想要转让app,需要有转进和转出的两个账号有root级的权限,因为公司的开发者账号可以把其他的apple ID加为开发者,这个加的账号是没有权限去做这个操作的。注释:有些情况那个‘转让app’的选项是看不到的,比如你的app处于准备提交或者被拒的状态,具体情况请看这个链接:http://stackoverflow.com/questions/30209792/itunes-connect-...原创 2018-03-22 17:18:25 · 984 阅读 · 0 评论 -
2018年iOS面试真题
3月面试真题 本套真题是笔者的一位朋友去小苏苏面试分享的,答案由笔者及其朋友总结,如有问题请及时纠正。1.内存管理 内存管理:是对内存资源进行优化。内存管理三种方式:ARC(自动内存管理)、MRC(手动内存管理)、内存池。 (1)、MRC(MannulReference Counting)手动引用计数 ,iOS 5.0之前采用的内存管理机制,需要程序员手动的创建对象申请内存,然后...原创 2018-03-27 11:39:07 · 764 阅读 · 0 评论 -
2018年iOS面试真题(二)
4月面试真题 本套真题是笔者去美团面试(社招)分享的,答案由笔者及其朋友总结,如有问题请及时纠正。1. 说说你对http和https的了解http :(1)、超文本传输协议 (HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。 (2)、http 是一个客户端和服务器端请求和应答的标...原创 2018-04-03 16:00:27 · 466 阅读 · 0 评论 -
微信小程序:授权问题(scope.userInfo【废弃】)
今天发现微信废弃了授权API:’scope.userInfo’wx.getSetting({ success(res) { if (!res.authSetting['scope.userInfo']) { wx.authorize({ scope: 'scope.userInfo', ...原创 2018-05-11 17:24:36 · 25939 阅读 · 6 评论 -
如何在mac上运行vue项目
本人使用的是Mac笔记本,所以搭建Vue环境的时候遇到了一些坑,在此做下记录希望可以帮到和我一样掉坑的人。 都说Vue和小程序有些地方很相似,便从朋友手里要了一个Vue的项目想着尝试看看。结果项目到手才发现坑了不是一个编辑器运行就可以解决的,还需要各种配置环境的……使用终端安装Vue运行环境1、安装 HomebrewHomebrew是osx下面最优秀的包管理工具,没有之一。先在终...原创 2018-07-31 10:12:52 · 4575 阅读 · 0 评论 -
iOS开发第三方库、插件整理集合
项目常用第三方 建议通过CocoaPods安装AFNetworking一款轻量级网络请求开源框架,其中带有Reachability监测网络状态。AFN3.0这里针对AFN3.X版本进行了一下二次封装,降低项目中的耦合,方便后期维护。 SDWebImage多个缩略图缓存组件。 MBProgressHUD一款提示框第三方库。 SVProgressHUD一款加载提示第三方库。 Masonr...原创 2018-08-31 17:13:37 · 659 阅读 · 0 评论 -
git常用命令
小白git操作小白git操作适合新使用git操作人员,包含了下载远程代码,修改后提交代码到远程,操作简单,易于掌握。// 远程仓库代码克隆到本地 (localhost:~ Jane$ 确保你终端路径)git clone https://github.com/CitrusHan/MyJobs_WeChat.git // 进入到你的项目文件 cd MyJobs_WeChat// ...原创 2019-05-16 12:10:18 · 497 阅读 · 0 评论 -
iOS 为什么要用weak修饰代理(delegate)
最近在review自己之前的代码发现了循环引用,ViewController和View相互持有的的问题,经层层排除发现问题出现在代理修饰和这个代理我又Block中使用了,问题暴露了。(注释:如果你也遇到同样的问题,你需要查看你的属性修饰、是采取了强引用、或是其他需要释放的控件,总之希望能提供帮助)开发中我们使用苹果提供的代理,或自己写代理,而代理属性都用weak或是assign修饰,但是也看到原创 2016-08-05 17:12:09 · 2913 阅读 · 0 评论 -
AFNetworking
AFNetworing2.0与1.0有很大的变化,这里基于NSURLConnection的API仅对2.0常用的使用方法进行总结。GET Request:提交GET请求AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];[manager GET:@"http://exam翻译 2015-11-19 13:52:07 · 780 阅读 · 0 评论 -
通知(在A类中调用B类中的方法NSNotification做法)
1、通知 (这种方式不会涉及初始化,还是同一个变量)在A类中注册通知在B类中接收通知最后移除通知原创 2015-12-16 12:56:59 · 1015 阅读 · 0 评论 -
iOS开发----Xcode7升级之后插件无法使用解决办法
在升级了 Xcode7 之后有些插件不能使用了,总结了解决办法:1、打开你的终端输入命令:defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID拿到你的Xcode 的 UUID2. 找到 Xcode 插件所在的目录(打开路径的快捷键为shift+command+g 然后原创 2015-12-25 18:45:01 · 901 阅读 · 0 评论 -
app界面设计规范--iOS系统
做了一段UI设计,遇到了一些关于屏幕适配问题,自己通过查找和个人理解做了一些总结(有问的)iOS界面尺寸设备分辨率状态栏高度导航栏高度标签栏高度iPhone6 plus、iPhone6s plus1242×2208 px (5.5英寸)60px132px147pxiPhone原创 2016-03-15 13:47:07 · 5176 阅读 · 0 评论 -
iOS 3D Touch开发介绍
3D Touch具体功能:用力按一个图标会弹出一层半透明菜单,里面包含了该应用下的一些快捷操作。它的功能默认是开启的,但用户也可以在系统设置中把它关掉(Settings > General > Accessibility > 3D Touch), 支持3D Touch的最低系统要求为 iOS 9,开发人员则需要至少使用XCode 7,目前支持3D Touch的设备只有 iPhone 6s 和原创 2016-05-26 16:13:56 · 1127 阅读 · 0 评论 -
iOS设置[self.navigationItem setTitleView:View]
功能需求在NavigationBar上添加搜索框,并对其位置提出了要求,系统中自带的TitleView不能满足,因此查阅了资料,重写了TitleView TitleView.h文件,重写TitleView继承UIView#import <UIKit/UIKit.h>@interface TitleView : UIView@endTitleView.m文件,重写其父类的Frame#import原创 2016-08-10 18:44:53 · 6501 阅读 · 0 评论 -
iOS生成随机数
Objective-C语言中生成随机数的函数arc4random()函数 arc4random()函数用来生成随机数且不需要种子,但是这个函数生成的随机数范围比较大,需要用取模的算法对随机值进行限制,有点麻烦随机函数arc4random()使用方法// 获取 0 ~ 99 随机数int x = arc4random() % 100;// 获取 500 ~ 1000 随机数 int y =原创 2016-08-15 16:26:59 · 887 阅读 · 0 评论 -
iOS--单例(Singleton)
单例模式是只有一个实例。单例模式确保某一个类只有一个实例,整个程序运行中只初始化一次,在程序结束时释放,这个类称为单例类。单例:在程序启动后,任何时间(程序运行到哪个线程),任何地点(所有的类里)获取的实例对象都是同一个实例对象1.单例模式要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。2.单例模式优点: 1.原创 2015-10-05 19:19:52 · 870 阅读 · 0 评论 -
截取当前视图
当前视图中所有的子视图进行截取- (UIimage *)screenImage { CGSizesize =self.bounds.size; UIGraphicsBeginImageContextWithOptions(size,YES, 0); UIImage *screenImage = nil; [self drawV原创 2016-08-05 13:05:57 · 620 阅读 · 0 评论 -
标记废弃的方法
DEPRECATED_ATTRIBUTE (注释:关键字)例:/** * @deprecated This method is deprecated starting in version 1.1.5 * @note Please use @code [CRCommenFuncManager checkIsFavObjectWithType:(FavType)favType原创 2016-08-05 13:30:30 · 3100 阅读 · 0 评论 -
xcode编程中使用使用了DOUAudioStreamer这个第三方遇到的问题及其解决方法
错误信息:Undefined symbols forarchitecture x86_64: '_OBJC_CLASS_$_DOUMPMediaLibraryAssetLoader', referencedfrom: objc-class-ref in DOUAudioFileProvider.old: symbol(s) not found forarchitecture x86_64c原创 2015-10-07 17:16:54 · 2598 阅读 · 3 评论 -
iOS项目拆分:数据本地持久化(1)
在这里本人将以往做过的项目一一做了总结,并且拆分成一个个细小的功能模块(这里不包括UI界面搭建),封装抽类成一个个独立的功能。会把涉及到的功能点和知识点做详细的注释,便于理解、学习、使用。重要数据本地存储重要数据这里所要说的是用户数据,包含用户相关信息,以便用户操作APP,前端和服务器的数据交互。 数据本地持久化(所谓的持久化,就是将数据保存到手机硬盘中,使得在应用程序或机器重启后可以继续访问之前保原创 2016-09-13 14:30:49 · 1350 阅读 · 0 评论 -
iOS项目拆分:数据本地持久化(2)
NSUserDefaults是一个单例,在整个程序中只有一个实例对象,它可以用于数据的永久保存,而且简单实用,适合存储轻量级的本地数据存储,比如保存登陆界面的用户名、密码之类的简单数据(注释:个人理解简单的用户名密码是可以依赖 NSUserDefaults存储,但是整套用户信息或是一些数据还是尽量存储成文件较为合理),或是某些计数统计之类较轻量级的数据,并使之本地持久化,除非APP卸载否则一直保存。原创 2016-09-13 18:10:18 · 1366 阅读 · 0 评论 -
iOS开发中NSLog的替换
在Objective-C中,NSLog相当于C语言中的printf,常用于输出。替代开发中Debug时的NSLog,release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的全部功能,在发布时不用再删除输出操作#ifdef DEBUG#define DebugLog( s, ... ) NSLog( @" %@", self, [[NSStri原创 2016-08-08 16:10:25 · 1318 阅读 · 0 评论 -
iOS项目拆分:数据本地持久化(3)
归档是将对象转化为数据字节, 以文件的形式存储在磁盘上,是数据本地持久化方式中的一种。 归档数据需要用到Model的时候,创建一个继承与NSObject的类遵循NSCoding协议。#pragma mark - 单个对象存储 NSArray *array = [NSArray arrayWithObjects:@"X教授",@"金刚狼",@"暴风女", nil]; NSString原创 2016-09-14 18:54:23 · 1348 阅读 · 0 评论 -
AFN3.0以上版本的二次封装
这里针对AFN3.X版本进行了一下二次封装,降低项目中的耦合,方便后期维护。项目中为什么使用AFNetworking,为什么需要封装每一款APP的开发,都需要用到网络请求接口,如果使用iOS系统原生的NSURLConnection,既考验开发人员的技术功底(那得是技术相当滴硬,而且在这方面造诣也很高),又考验开发人员的忍耐力(不停地改,改,改),后期维护也是很耗费人力和时间。于是AFNetworki原创 2016-08-11 19:27:28 · 1965 阅读 · 0 评论 -
UIWebView 使用中遇到的问题(NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802))
在使用WebView打开网页的时候遇到了问题,没找到很好地解决方案,于是查看了国外码农的见解,找到思路解决了问题,在这里分享给大家,希望可以有帮助……(PS:如果有问题我们可以讨论,求同存异)在iOS9后引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)新特性要求App内访问的网络必须使用HTTPS协议。原创 2016-07-18 17:25:36 · 1887 阅读 · 0 评论
分享