iOS开发经验总结一

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);

}

时间: 2024-10-12 04:47:34

iOS开发经验总结一的相关文章

iOS 开发经验总结

iOS 开发经验总结http://www.cocoachina.com/ios/20170216/18699.html 1.cocoa pods 常用的framework 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 platform :ios, '7.0' target 'store' do pod 'AFNetworking', '~> 3.1.0' pod 'JSONKit', '~> 1.5pre' pod 'MBPr

IOS开发经验分享

一些IOS开发的心得: 1) [Multiple Threads] IOS多线程注意, 所有的UI操作都必须在主线程上: Any code that will update the UI should be done on the main thread. Data loading should typically be done in some background thread. 示例: [self performSelectorOnMainThread:@selector(updateTh

多年iOS开发经验总结(一)

总结了几个月的东西终于能和大家分享了,不多说,直接看东西! 1.禁止手机睡眠 1 [UIApplication sharedApplication].idleTimerDisabled = YES; 2.隐藏某行cell 1 2 3 4 5 6 7 8 9 10 11 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // 如果是你需要隐藏的那一行,返回

转载:多年iOS开发经验总结

转载:http://www.jianshu.com/p/1ff9e44ccc78 总结了几个月的东西终于能和大家分享了,不多说,直接看东西! 1.禁止手机睡眠 [UIApplication sharedApplication].idleTimerDisabled = YES; 2.隐藏某行cell - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { //

iOS开发经验总结(上)

在iOS开发中经常需要使用的或不常用的知识点的总结,几年的收藏和积累(踩过的坑). 一. iPhone Size 手机型号 屏幕尺寸 iPhone 4 4s 320 * 480 iPhone 5 5s 320 * 568 iPhone 6 6s 375 * 667 iphone 6 plus 6s plus 414 * 736 二. 给navigation Bar 设置 title 颜色 UIColor *whiteColor = [UIColor whiteColor]; NSDictiona

iOS开发经验总结(下)

四十.AFNetworking 传送 form-data 将JSON的数据,转化为NSData, 放入Request的body中. 发送到服务器就是form-data格式. 四十一.非空判断注意 BOOL hasBccCode = YES; if ( nil == bccCodeStr || [bccCodeStr isKindOfClass:[NSNull class]] || [bccCodeStr isEqualToString:@""]) { hasBccCode = NO;

iOS开发经验分享:UITableViewCell复用问题

很多朋友觉得UITableViewCell复用问题很难处理,百思不得其解,甚至有很多朋友自己琢磨很久也不明白个究竟.现在分享一下个人的一些经验,希望对大家有帮助,如果有好的意见或者有不同的看法也可以提出来,让我们一起分享一起进步,知识只有在分享的情况下才能实现它的最大价值.好了,废话少说,直奔主题了.列举两个场景对比一下,也许tableviewcell的复用就很清晰明了了.本文来自于无限互联的学员. 例1: - (UITableViewCell *)tableView:(UITableView

多年iOS开发经验总结

1.禁止手机睡眠 [UIApplication sharedApplication].idleTimerDisabled = YES; 2.隐藏某行cell - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // 如果是你需要隐藏的那一行,返回高度为0 if(indexPath.row == YouWantToHideRow) return 0; ret

iOS开发经验总结

1.设置UILabel行间距 NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:label.text]; NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; [style setLineSpacing:20]; [attrString addAttribute:NSParag