IOS疑难杂项录

1: 使用UINavigationController push一个新的controller的时候, 旧的ViewController的view上的元素总是会有一部分叠加在新的controller的view上, 造成视觉混乱。———————— 由于创建controller 时,view默认的background color为透明色。(主要是当所有的view背景均显示为白色的时候,很难去发现这个背景色是透明的) 只要讲这个背景色改成非透明色即可! 此问题只出现在IOS7及以上。


2:每次在运行xcode在真机上,或者archive打包的时间,都会弹出输入用户名和密码的框.

解决方法:

打开钥匙串访问,在“系统”中双击小钥匙。


3:在使用XIB作为view的加载项时,会出现

SimpleTable3[29418:11303] *** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘-[UIViewController _loadViewFromNibNamed:bundle:] loaded the “SimpleTableViewController” nib but the view outlet was not set.’

 很简单,时命名问题,view的名字和ViewController的名字太像,(HKViewController / HKView),以至于xCode认为是相关联的,只要把View名字换掉就可以。


4:ViewController从Xib加载后,在代码中修改Frame无反应 

解决方法查看xib里view是不是设置了自动布局 use auto layout。取消掉就可以了。  其中子视图AutoSizing的内部十字架全部取消,否则会变形.


5:icon图标取消高亮,解决在ios6下icon颜色变淡的问题

Supporting Files中的plist中在Information Property List和Icon files(iOS5)中的Primary Icon目录下添加

icon already includes gloss effects = YES;


6: tabbar会有默认的选中蓝色,无论是否设置选中为选中图片,都会有 

解决办法  tabBar setSelectedImageTintColor:选中的颜色色值


7:Block两点注意:

1.block 的循环引用(retain cycle)

2.去除block产生的告警时,需注意问题。

非ARC:在Block中访问自身的属性,会retain自身造成内存泄漏,解决这种循环引用问题。就是在变量前面加个__block。

ARC:不是简单的在变量前面加个__weak,这时还会告警,说这是一个WEAK变量,就马上会被release。因此还未到执行block中的内容就已经被释放,解决这种循环引用问题 方法:__weak typeof(CustomCell) *weakCell = cell;  


8: 支持HTTP请求:

iOS9引入了新特性App Transport Security (ATS)。
新特性要求App内访问的网络必须使用HTTPS协议。
但是现在很多项目使用的是HTTP协议,现在也不能马上改成HTTPS协议传输,解决办法:


Xcode7:Info.plist中add Row添加NSAppTransportSecurity类型Dictionary


NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES

Xcode7.1中苹果更改了这项设定的名称

App Transport Security Settings下添加Allows Arbitrary Loads类型Boolean,值设为YES





持续更新中..........

9:UITabbar选中某个item是的图片设置问题

原始设置方法(These methods are now deprecated. Please use -initWithTitle:image:selectedImage:.) : 

- (void)setFinishedSelectedImage:(nullableUIImage *)selectedImage withFinishedUnselectedImage:(nullableUIImage *)unselectedImage

替代方法:

  1. UIImage *musicImage = [UIImage imageNamed:@"music.png"];  
  2. UIImage *musicImageSel = [UIImage imageNamed:@"musicSel.png"];  
  3.   
  4. musicImage = [musicImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];  
  5. musicImageSel = [musicImageSel imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];  
  6.   
  7. self.musicViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Music" image:musicImage selectedImage:musicImageSel];  

注意 iOS7界面中的一个重要改变.设置UIImage的渲染模式:UIImage.renderingMode重大改变,你可以设置一个UIImage在渲染时是否使用当前视图的Tint Color。 不加4和5项,导致选中图片无效果,要添加额外的代码才能生效。


10:一个View上面多个Button的点击事件互斥

解决方案: [button setExclusiveTouch:YES]


11: UIWebView修改加载页面的字体大小及其它属性

通过实现UIWebViewDelegate的- (void)webViewDidFinishLoad:(UIWebView *)webView来实现

复制代码
- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"webViewDidFinishLoad");
    //字体大小
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '120%'"];
    //字体颜色
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= 'gray'"];
    //页面背景色
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.background='#2E2E2E'"];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: iOS内存管理版本记如下: 1. iOS 2.0及更早版本:使用手动管理内存的方式。 2. iOS 3.0:引入了基于引用计数的自动内存管理,使用retain和release函数来增加或减少对象的引用计数。 3. iOS 5.0:引入了ARC(自动引用计数)机制,ARC会在编译时自动插入retain和release代码,减少手动管理内存的工作。 4. iOS 7.0:引入了内存诊断工具Memory Usage Report,可以监测App内存使用情况,帮助开发者优化内存管理。 5. iOS 8.0:引入了一些新的API,如NSCache和NSURLSession,使得内存管理更加方便和灵活。 6. iOS 11.0:引入了基于图片大小的UIImage渲染机制,减少了内存占用。 7. iOS 13.0:引入了叫做“Scene”的多任务环境,使得内存管理更加复杂,需要更加小心谨慎地处理内存问题。 总的来说,随着iOS版本的不断更新,内存管理的机制也在不断地完善和优化,使得iOS应用能够更加高效地使用内存,提高用户体验。 ### 回答2: iOS的内存管理是由操作系统自动管理的,在不同的版本中有所不同。 在iOS 5之前的版本中,内存管理主要依赖于手动管理引用计数(reference counting)来管理对象的生命周期。开发者需要手动调用retain和release方法来增加或减少对象的引用计数,以确保对象在不再需要时能够被正确释放。这种方式需要开发者非常谨慎地管理对象的引用,以避免内存泄漏或野指针等问题。 从iOS 5开始,iOS引入了自动引用计数(Automatic Reference Counting,ARC)的内存管理机制。ARC可以自动地插入retain、release和autorelease等方法的调用,使得开发者不再需要手动进行内存管理。开发者只需要关注对象的创建和使用,而不需要关心具体的内存管理细节。ARC减少了内存管理的工作量,提高了开发效率,并且减少了内存泄漏和野指针等问题的发生。不过,ARC并不是完全的自动化内存管理,开发者仍然需要遵循一些规则,比如避免循环引用等,以保证内存的正确释放。 随着iOS版本的不断更新,苹果不断改进和优化内存管理机制。每个新版本都带来了更好的性能和更高效的内存管理。开发者可以通过关注苹果的官方文档和开发者社区中的更新内容来了解每个版本中的具体变化和改进。 总结来说,iOS的内存管理从手动的引用计数到自动引用计数的演变,极大地简化了开发者的工作,并提高了应用的性能和稳定性。随着不断的改进和优化,iOS的内存管理会越来越高效和可靠。 ### 回答3: iOS内存管理版本记是指苹果公司在不同版本的iOS操作系统中对于内存管理方面的改进和更新记。随着iOS版本的不断迭代,苹果在内存管理方面进行了一系列的优化和改进,以提高系统的稳定性和性能。 首先,在早期的iOS版本中,苹果采用了手动内存管理的方式,即开发人员需要手动创建和释放内存,容易出现内存泄漏和内存溢出等问题。为了解决这些问题,苹果在iOS5版本中引入了自动引用计数(ARC)机制。ARC机制能够通过编译器自动生成内存管理代码,避免了手动管理内存带来的问题。 其次,iOS6版本引入了内存分页机制。这个机制能够将应用程序内存分成不同的页,将不常用的页置于闲置列表中,从而释放出更多的内存空间。这些闲置列表中的页能够在需要时快速恢复到内存中,减少了内存压力。 此外,iOS7版本中进一步提升了内存管理的能力。苹果在这个版本中引入了内存压缩技术,将内存中的数据进行压缩,从而提高了内存利用率。此外,iOS7还引入了资源清理功能,可以自动清理不再使用的资源,释放内存空间。 最后,在iOS13版本中,苹果进一步改进了内存管理策略。该版本中引入了后台内存优化功能,能够自动优化应用在后台运行时的内存占用,减少了后台应用对于系统内存的占用和影响。 综上所述,iOS内存管理版本记反映了苹果在不同版本的iOS操作系统中对于内存管理方面的改进和优化。这些改进和优化使得iOS系统更加稳定和高效,并且提升了应用程序的性能和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值