1、使用%zd打印NSInteger ,%tu打印NSUInteger
2、UIScrollView在iOS7中使用了Autolayout导致不能滚动,方法是添加scrollview的content高度
3、UICollectionView的数据不够,无法滑动,解决方案:tableview的数据无论多少,它的界面默认都是可以滑动的,和tableview相比collectionview的数据较少不够一个屏幕是它无法滑动collectionview.alwaysBounceVertical=YES;设置总能垂直滑动就行。
4、直接ios7的连续跳转
-(void)back
{
[self dismissViewControllerAnimated:YES completion:^{
if([weakself.navigationController popViewControllerAnimated:YES]){
}
}];
}
5、ios8以后用WKWebView代替UIWebView,ios8之前使用UIWebView进行html的展示,使用UIWebView存在内存占用过大并不释放问题。WKWebView解决内存占用过大问题
6、企业证书下载版本可在APP中直接打开,在APP中有H5的页面,可以直接点击进行其他应用的下载
7、URL转码问题,
stringByAddingPercentEscapesUsingEncoding,ios9版本中需要使用
stringByAddingPercentEncodingWithAllowedCharacters替代之前stringByAddingPercentEscapesUsingEncoding。
8、iOS 开发,工程中混合使用 ARC 和非ARC
Xcode 项目中我们可以使用 ARC 和非 ARC 的混合模式。
如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签。
如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标签。
添加标签的方法:打开:你的target -> Build Phases -> Compile Sources 2、双击对应的 *.m 文件 3、在弹出窗口中输入上面提到的标签 -fobjc-arc / -fno-objc-arc 4、点击 done 保存
9、
微信分享的时候注意大小
text 的大小必须 大于0 小于 10k
image 必须 小于 64k
url 必须 大于 0k
10、APNS推送
推送的 pem 文件的生成:
pem 证书是服务器向苹果服务器做推送时候需要的文件。
-
打开 Keychain Access,在 Certificates 里面找到推送的证书。
-
分别将 certificate 和 private key 导出得到.p12 文件。例如:
Apple Development Push Services > Export “Apple Development Push Services ID123”,保存为 apns-dev-cert.p12。 对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件。
• 需要通过终端命令将这些文件转换为 PEM 格式:
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in
apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in
apns-dev-key.p12
此处要求输入一个密码,输入 123456.
-
移除密码(上面的 123456)
openssl rsa -in apns-dev-key.pem -out apns-dev-key.pem -
最后,你需要将键和许可文件合成为 apns-dev.pem 文件,此文 件在连接到 APNS 时需要使用:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem同样 Distribution Certificate 的 pem 文件生成方式一样。
openssl pkcs12 -clcerts -nokeys -out apns-dis-cert.pem -in apns-dis-cert.p12
openssl pkcs12 -nocerts -out apns-dis-key.pem -in apns-dis-key.p12 openssl rsa -in apns-dis-key.pem -out apns-dis-key.pem
cat apns-dis-cert.pem apns-dis-key.pem > apns-dis.pem
// IOS8 新系统需要使用新的代码咯
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
//这里还是原来的代码
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
原本在IOS7当中 判断PUSH是否打开的方法是:
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
return (types & UIRemoteNotificationTypeAlert);
如果将这段代码使用在 IOS当中,虽然不会出现crash的现象,但是基本没什么作用。
在IOS8中,我们使用如下的新代码来取代以上的代码
{
UIRemoteNotificationType types;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
types = [[UIApplication sharedApplication] currentUserNotificationSettings].types;
}
else
{
types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
}
return (types & UIRemoteNotificationTypeAlert);
}