搭建IPv6本地环境测试App
一、前言最近有很多人都在关注支持IPv6的事情,果然是苹果打个哈欠,iOS行业内就得起一次风暴呀。自从5月初Apple明文规定所有开发者在6月1号以后提交新版本必须需要支持IPv6-Only的网络。
二、IPv6-Only支持是什么?IPv6是对IPv4地址空间的扩充,IPv4和IPv6的区别就是IP地址前者是.(dot)分割,后者是以:冒号)分割的(更多详细信息自行搜索)。目前当我们的iOS设备连接上WiFi、4G、3G等网络时,设备被分配的地址均是IPv4,但是随着运营商和企业逐渐部署IPv6 DNS64/NAT64网络之后,设备被分配的地址会变成IPv6的地址,而这些网络就是所谓的IPv6-Only网络,并且仍然可以通过此网络去获取IPv4地址提供的内容。客户端向服务器端请求域名解析,首先通过DNS64 Server查询IPv6的地址,如果查询不到,再向DNS Server查询IPv4地址,通过DNS64 Server合成一个IPv6的地址,最终将一个IPv6的地址返回给客户端。
如图所示:
三、搭建IPv6环境测试你的APP在Mac OS 10.11+的双网卡的Mac机器(以 ...
Xcode 7.2 真机调试iOS 9.3的设备
前言昨天回到家一不小心把测试机(没有设密码)升级到9.3.1了,立马悲剧了,真机调试时报错:Could not find Developer Disk Image ,原因是:Xcode7.2中还没有支持9.3的Disk Image。
iOS 9.3 -> Could not find Developer Disk Image真机调试错误解决办法
将Xcode更新到最新版本7.3,因为支持iOS 9.3的Xcode版本为 7.3(但是Xcode 7.3要求最小系统为10.11,所以这个对于系统还是10.10的没有用)。
下载该Disk Image,放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport文件夹下,重启Xcode即可解决此类问题。
资源文件下载地址
对于Xcode老是在App Store升级失败,而且下载慢,我找到了这个--> 官方Xcode.dmg文件下载链接:超级传送门
Disk Image 9.3 下载地址:http://pan ...
编译.a静态库
一、编译.a静态库1.1 创建.a静态库创建项目时,选择Framework&Library–>Static Library
1.2 编写核心代码TODO
编译静态库前,将头文件暴露出去
1.3 编译模拟器和真机库打开Products即可看到.a静态库
1.4 测试使用静态库创建一个项目,测试使用静态库即可.
二、静态库的架构问题
设备的CPU架构
不同的设备使用的CPU是不同的
CPU的不同造成使用的CPU架构(指令集)不同
静态库有其支持的CPU架构
如果静态库在不支持的CPU架构上运行就会报错
模拟器使用的CPU架构
iPhone4s-iPhone5 : i386
iPhone5s-iPhone6plus : x86_64
真机使用的CPU架构
iPhone3gs-iPhone4s : armv7
iPhone5-iPhone5c : armv7s
iPhone5s-iPhone6plus : arm64
唯一特殊:只要支持armv7的静态库可以在armv7s上正常运行
查看静态库支持的架构
lipo -info 静态库
合并静态库
lipo -c ...
编译.framework静态库和调试静态库
#一、编译.framework静态库
1.1 创建项目时,选择Framework&Library–>Frameword
默认创建的项目中有一个主头文件,可以将其他头文件在该头文件中import 一下
1.2 编写核心代码编译库前,将头文件暴露出去
默认情况直接编译的库位动态库,可以修改配置改成静态库
1.3 分别编译模拟器和真机库打开Products即可看到.framework库
二、开发调试静态库如果希望一遍开发一遍调试静态库,可以在项目中直接添加静态库
在项目中,按照下面步骤即可:
点击项目–>左下角+号
选择希望开发的静态库类型(.a/.framework)
创建静态库后,即可看到静态库文件
使用静态库
使用静态库前需要进行配置
测试之后,按照之前步骤打包成静态库即可
静态库合并根据编译选择的机器类型,静态库有模拟器和真机的区别,两者是不能混用的。此时可以通过配置一个Run Script,在Script中使用lipo命令来合并两个版本的Framework,重新生成一个新的Framework,这个Framework将同时支持在模拟器和真机上 ...
iOS App上传项目遇到的问题
1. 提示iTunes Store operation filed(Cannot verify client)
错误原因:没有验证到Itunes Store,网速过慢导致,或者网络堵塞解决办法:找个网络快的地方再试试吧!!
2. 在上传项目的时候,UpLoad App Store后弹出iTunes Store operation failed
错误原因:你在Itunes Connect(https://itunesconnect.apple.com)网站里没有对应你Xcode项目设置的这个Bundle Id的应用解决办法:去https://itunesconnect.apple.com添加这个应用
3. 这个问题比较麻烦,多半是证书,描述文件Bundle ID不匹配原因!
错误原因:证书和描述文件不匹配。也就是你选择描述文件(而描述文件绑定的证书不是你机器上的证书)解决办法:让证书自动去寻找描述文件。看下图
如果还不行,就确认下你的证书和描述文件 是否真正对应上了!
4. Itunes Store operation failed
解决方法:重新启动Xcode完全退出。
...
iOS App上架流程(2016详细版)
一、前言:作为一名iOSer,把开发出来的App上传到App Store是必要的。下面就来详细讲解一下具体流程步骤。
二、准备:
一个已付费的开发者账号(账号类型分为个人(Individual)、公司(Company)、企业(Enterprise)、高校(University)四种类型,每年资费分别为$99、$99、$299、免费。)。
一个已经开发完成的项目。
三、检查:
你的Xcode必须是正式版的,beta版本的Xcode是不能上传项目的。
上传使用的Mac的OS X系统必须也是正式版的,beta版本也不行。
请确认你安装的Xcode是从App Store或者是开发者网站下载的,而不是从其它渠道获取的安装包安装的,因为非官方途径下载的Xcode可能带有XcodeGhost病毒。如何检查?
四、生成发布证书1. 打开苹果开发者中心:https://developer.apple.com打开后点击:Account
下面输入已付款过的Apple账号和密码登录(如果你的电脑已经保存了密码,会直接进入)
2. 点击:Certificates, Identifiers & ...
iOS面试题总结整理(附答案-持续更新)
1. 多线程的实现方式;
2. 延迟执行的几种方式;
延迟1秒执行代码
123-(void)delayMethod{ NSLog(@"delayMethodEnd");}
performSelector方法:
123// 此方式要求必须在主线程中执行,否则无效。// 是一种非阻塞的执行方式,暂时未找到取消执行的方法。[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f];
定时器:NSTimer;
123// 此方式要求必须在主线程中执行,否则无效。// 是一种非阻塞的执行方式,可以通过`NSTimer`类的`- (void)invalidate;`取消执行。[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(delayMethod) userInfo:nil repeats:NO];
sleep方式;
123// 此方式在主线 ...
点击状态栏,滚动视图返回顶部的实现原理
一、前言 在iOS开发中,我们常常看到好多应用都有这样一个效果,如果一个应用当前页是是一个滚动视图,当用户点击状态栏的时候,滚动视图会自动的返回内容的最顶部。其实这个功能是UIScrollView自带的,不需要我们手动去实现,只需要设置self.scrollView.scrollsToTop = YES即可(scrollsToTop默认为YES)。但是这个属性有一个前提是窗口下必须只有一个可滚动的View才有效果。
12// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `shouldScrollViewScrollToTop`, and it is not already at the top.// On ...
一行代码集成点击状态栏,滚动视图当前内容滚动到顶部
只有一个ScrollView的时候我们在使用App的时候,经常会看到这样的效果,当我们点击状态栏的时候,我们已经滚动过的内容,会自动的滚回顶部,例如:设置界面:
其实这个功能是系统默认实现的,不需要自己写代码。当点击状态栏的时候自动滚回顶部是因为UIScrollView的scrollsToTop的属性为YSE
1@property(nonatomic) BOOL scrollsToTop __TVOS_PROHIBITED; // default is YES.
居然系统已经实现了这个功能,那么为什么还要自己实现呢?这个是因为,系统实现的是有缺陷的。
当ScrollView超过一个的时候下面是苹果对scrollsToTop属性的解析说明
12// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop ...
为Xcode添加删除当前行、复制当前行快捷键
之前在做JAVA开发时,使用eclipse过程中,用的最多也是特喜欢的就是删除当前行和复制当前行的快捷键。然而在转向iOS开发时,Xcode是不支持这两个快捷键的,一次偶然发现有个小窍门可以为Xcode来添加这两个快捷键。
修改权限
修改Xcode里快捷键的配置文件(plist)的权限,在终端中输入下面两条命令
12sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistsudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/
添加快捷方式
权限修改完成后,在终端中输入下面的命令,打开plist文件修改(默认是Xcode打开)
1open /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKe ...