ios 有需要那个的吗

全部答案(共1个回答)
硬盘上就行了,因为使用的时候是用itunes连接手机,然后在itunes连手机的画面上按住shift+恢复,之后就可以选择你存放固件的路径打开固件,就会自动恢复了,注意恢复前要做好备份等工作。
http://www.enet.com.cn/article//A61.shtml
首先找到 iPhone 主屏上的“设置”图标,点击打开,如图所示
ios7.01固件下载及升级详细教程
在设置列表中找到“通用”选项,点击进入,如图所示
这个地址,再等几天!http://bbs.app111.com/topic-24.html
在苹果设备的更新推送里就有
现在是开发者版本,要开发者账号,普通用户还用不了,现在bug还比较多。
不可能,给你个网址你看吧 http://bbs.weiphone.com/read-htm-tid-6543299.html
答: 1、iPhone通讯录突然多了一大堆不认识的联系人,可能是由于公用ID账号导致通讯录同步所出现的情况。2、苹果设备最好不要公用AppleID账号,以免数据信息乱...
答: 这个手机发热是因cpu的原因。玩游戏、看电影时间久了自然都会热,这是现在只能手机的通病,暂时没有办法解决的, 苹果手机有的时候也很热。
答: 数码照片是什么含义呢
答: 不能。芯片都不一样。
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415(黑色绚烂ぃ)
第三方登录:苹果系统ios7与ios6有什么区别?那个系统更好用?
作者:佚名
字体:[ ] 来源:互联网 时间:06-13 17:43:09
用过苹果的朋友们都知道,苹果的手机、ipad的系统是会不定期更新的,按照道理来说,每个更新了的系统都会比原来的系统要好些,以为修复了以前的不足,那么ios7会比ios6好吗,我们一起来看一看
  与 iOS 6 相比,iOS 7 的最大改变在哪里?这个问题的答案毫无疑问是非常统一的。为了让用户尽量适应 iOS 7 带来的新改变,苹果特地在 WWDC 主题演讲过程中播放了一则介绍视频,讲述了新界面的设计理念。但实际上,很多用户如今仍然不愿接受 iOS 7 的新界面,他们选择继续守在 iOS 6(甚至是更低的版本)。
  现在问题来了,吐槽 iOS 7 新界面的大多数都是手持一部或多部苹果设备的用户,毕竟大家都已经对传统界面习以为常。那么对于一个完全没有接触过 iOS 的消费者来讲,他会在 iOS 6 和 iOS 7 之间进行怎样的选择?如果你身边有这样的朋友,不妨让他来看看下面的这些对比图。
  左边 iOS 6 右边 iOS 7,我们整理了多张对比图,让大家以最直观的角度来看待两代系统之间的视觉差异。无论是桌面、拨号界面、还是地图等等,我们都能看到几乎完全不同的视觉效果。不知道各位看完之后,是否会对 iOS 7 产生新的理解?如果你没有接触过 iOS 设备,又会喜欢哪一个系统呢?&
大家感兴趣的内容
12345678910
最近更新的内容在iOS开发为什么使用多线程 ,多线程有哪些方法
多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径
在级别内,程序并排执行,程序分配到每个程序的执行时间是基于该程序的所需时间和其他程序的所需时间来决定的。
然而,在每个程序内部,存在一个或者多个执行线程,它同时或在一个几乎同时发生的方式里执行不同的任务。
概要提示:
iPhone中的线程应用并不是无节制的,官方给出的资料显示,iPhone OS下的主线程的堆栈大小是1M,第二个线程开始就是512KB,并且该值不能通过编译器开关或线程API函数来更改,只有主线程有直接修改UI的能力
一、线程概述
有些程序是一条直线,起点到终点&&如简单的hello world,运行打印完,它的生命周期便结束了,像是昙花一现。
有些程序是一个圆,不断循环直到将它切断&&如操作系统,一直运行直到你关机。
一个运行着的程序就是一个进程或者叫做一个任务,一个进程至少包含一个线程,线程就是程序的执行流。
Mac和中的程序启动,创建好一个进程的同时,一个线程便开始运作,这个线程叫做主线程。主线成在程序中的位置和其他线程不同,它是其他线程最终的父线程,且所有的界面的显示操作即AppKit或UIKit的操作必须在主线程进行。
系统中每一个进程都有自己独立的虚拟内存空间,而同一个进程中的多个线程则公用进程的内存空间。
每创建一个新的进成,都需要一些内存(如每个线程有自己的stack空间)和消耗一定的CPU时间。
当多个进成对同一个资源出现争夺的时候需要注意线程安全问题
创建一个新的线程就是给进程增加一个执行流,所以新建一个线程需要提供一个函数或者方法作为线程的进口。
1.使用NSThread
NSThread提供了创建线程的路径,还可以提供了监测当前线程是否是主线程的方法
使用NSThread创建一个新的线程有两种方式:
1.创建一个NSThread的对象,调用Start方法&&使用一个目标对象的方法初始化一个NSThread对象,或者创建一个继承自NSThread的子类,实现起main方法?,然后在直接创建这个子类的对象。
2.使用detachNewThreadSelector:toTarget:withObject:这个类方法创建一个子线程,这个比较直接,直接使用目标对象的方法作为线程启动入口
2.使用NSObject
使用NSObject直接就加入了对多线程的支持,允许对象的某个方法在后台运行。
[my0bj performSelectorInBackground:@selector(doSomething) withObject:nil];
3.POSIX Thread
由于Mac和IOS都是基于Darwin系统,Darwin系统的UNX内核,是基于mach和BSD的,继承了BSD的POSIX接口,所以可以直接使用POSIX线程的相关接口开实现线程
创建线程的接口为 pthread_create, 当然在创建线程之前可以创建好相关线程的属性
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
NSOperation&NSOperationQueue
很多时候我们使用多线程,需要控制线程的并发数,毕竟线程也是需要消耗系统资源的,当程序中同时运行的线程过多时,系统必然变慢,所以很多时候我们会控制同时运行线程的数目
NSOperation可以封装我们的操作,然后将创建好的NSOperation对象放到NSOperationQueue队列中,OperationQueue便开始启动新的线程去执行队列中的操作,OperationQueue的并发数时可以通过如下方式进行设置的:
- (void)setMaxConcurrentOperationCount:(NSInteger)count
GCD时Grand central Dispatch的缩写,是一系列BSD层面的接口。在mac10.6和IOS4.0以后才引入的
且现在NSOperation和NSOperationQueue的多线程的实现就是基于GCD的。目前这个特性也被移植到 FreeBSD上了,可以查看libdispatch这个开源项目。
dispatch_queue_t imageDownloadQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
当然,GCD除了处理多线程外还有很多非常好的功能,其建立在强大的kqueue之上,效率也能够得到保障。
IOS的多线程,一般分为三种方式:
3, Grand Central Dispatch (GCD) (iOS4 才开始支持)
下面简单说明一下:
1:NSThread
创建方式主要有两种:
[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil];
NSThread* myThread = [[NSThread alloc] initWithTarget:self
selector:@selector(myThreadMainMethod:)
object:nil];
[myThread start]; //启动线程
这两种方式的区别是:前一种一调用就会立即创建一个线程来做事情;而后一种虽然你 alloc 了也 init了,但是要直到我们手动调用 start 启动线程时才会真正去创建线程。这种延迟实现思想在很多跟资源相关的地方都有用到。后一种方式我们还可以在启动线程之前,对线程进行配置,比如设置 stack 大小,线程优先级。
此外还有一种间接的方式:利用NSObject的方法
performSelectorInBackground:withObject: 来创建一个线程:
[myObj performSelectorInBackground:@selector(myThreadMainMethod) withObject:nil]; //在后台运行某一个方法
其效果与 NSThread 的 detachNewThreadSelector:toTarget:withObject: 是一样的。
2,NSOperation:
官方解释:The NSOperation class is an abstract class you use to encapsulate the code and data associated with a single task. Because it is abstract, you do not use this class directly but instead subclass or use one of the system-defined subclasses (NSInvocationOperation or NSBlockOperation) to perform the actual task.
并发执行你需要重载如下4个方法
//执行任务主函数,线程运行的入口函数
-(void)start
//是否允许并发,返回YES,允许并发,返回NO不允许。默认返回NO
-(BOOL)isConcurrent
- (BOOL)isExecuting
//是否已经完成,这个必须要重载,不然放在放在NSOperationQueue里的NSOpertaion不能正常释放。
- (BOOL)isFinished
比如TestNSOperation:NSOperaion 重载上述的4个方法,
声明一个NSOperationQueue,NSOperationQueue *queue = [[[NSOperationQueue alloc ] init]autorelease];
[queue addOperation:testNSoperation];
它会自动调用TestNSOperation里的start函数,如果需要多个NSOperation,你需要设置queue的一些属性,如果多个NSOperation之间有依赖关系,也可以设置,具体可以参考API文档。
(2)非并发执行
-(void)main
只需要重载这个main方法就可以了。
dispatch_async(dispatch_queue_t queue,dispatch_block_t block);
async表明异步运行,block代表的是你要做的事情,queue则是你把任务交给谁来处理了.
之所以程序中会用到多线程是因为程序往往会需要读取数据,然后更新UI.为了良好的用户体验,读取数据的操作会倾向于在后台运行,这样以避免阻塞主线程.GCD里就有三种queue来处理。
1. Main queue:
  顾名思义,运行在主线程,由dispatch_get_main_queue获得.和ui相关的就要使用MainQueue.
2.Serial quque(private dispatch queue)
  每次运行一个任务,可以添加多个,执行次序FIFO. 通常是指程序员生成的.
3. Concurrent queue(globaldispatch queue):
可以同时运行多个任务,每个任务的启动时间是按照加入queue的顺序,结束的顺序依赖各自的任务.使用dispatch_get_global_queue获得.
所以我们可以大致了解使用GCD的框架:
dispatch_async(getDataQueue,^{
//获取数据,获得一组后,刷新UI.
dispatch_aysnc(mainQueue, ^{
//UI的更新需在主线程中进行
下面 就来总结一下这三种多线程方式的区别吧:
Thread 是这三种范式里面相对轻量级的,但也是使用起来最负责的,你需要自己管理thread的生命周期,线程之间的同步。线程共享同一应用程序的部分内存空间, 它们拥有对数据相同的访问权限。你得协调多个线程对同一数据的访问,一般做法是在访问之前加锁,这会导致一定的性能开销。在 iOS 中我们可以使用多种形式的 thread:
Cocoa threads: 使用NSThread 或直接从 NSObject 的类方法 performSelectorInBackground:withObject: 来创建一个线程。如果你选择thread来实现多线程,那么 NSThread 就是官方推荐优先选用的方式。
Cocoa operations是基于 Obective-C实现的,类 NSOperation 以面向对象的方式封装了用户需要执行的操作,我们只要聚焦于我们需要做的事情,而不必太操心线程的管理,同步等事情,因为NSOperation已经为我 们封装了这些事情。 NSOperation 是一个抽象基类,我们必须使用它的子类。iOS 提供了两种默认实现:NSInvocationOperation 和 NSBlockOperation。
Grand Central Dispatch (GCD): iOS4 才开始支持,它提供了一些新的特性,以及运行库来支持多核并行,它的关注点更高:如何在多个 cpu 上提升效率。
最后,既然说道多线程的开发,难免会在多线程之间进行通讯;
利用NSObject的一些类方法,可以轻松搞定。
在应用程序主线程中做事情:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array
在指定线程中做事情:
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array
在当前线程中做事情:
//Invokes a method of the receiver on the current thread using the default mode after a delay.
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay
performSelector:withObject:afterDelay:inModes:
取消发送给当前线程的某个消息
cancelPreviousPerformRequestsWithTarget:
cancelPreviousPerformRequestsWithTarget:selector:object:
如在我们在某个线程中下载数据,下载完成之后要通知主线程中更新界面等等,可以使用如下接口:- (void)myThreadMainMethod
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// to do something in your thread job
[self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO];
[pool release];iOS 10 个实用小技巧(总有你不知道的和你会用到的)
时间: 10:34:57
&&&& 阅读:5343
&&&& 评论:
&&&& 收藏:0
标签:在开发过程中我们总会遇到各种各样的小问题,有些小问题并不是十分容易解决。在此我就总结一下,我在开发中遇到的各种小问题,以及我的解决方法。比较普遍的我就不再提了,这里主要讲一些你可能不知道的(当然,也有可能你都知道,大神就不必往下看了)
1、控件的局部圆角问题
你是不是也遇到过这样的问题,一个button或者label,只要右边的两个角圆角,或者只要一个圆角。该怎么办呢。这就需要图层蒙版来帮助我们了
CGRect rect = CGRectMake(0, 0, 100, 50);
&&&&CGSize radio = CGSizeMake(5, 5);//圆角尺寸
&&&&UIRectCorner corner = UIRectCornerTopLeft|UIRectCornerTopRight;//这只圆角位置
&&&&UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:radio];
&&&&CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];//创建shapelayer
&&&&masklayer.frame = button.bounds;
&&&&masklayer.path = path.CGPath;//设置路径
&&&&button.layer.mask = masklayer;
举例为button,其它继承自UIView的控件都可以
2、navigationBar的透明问题
如果仅仅把navigationBar的alpha设为0的话,那就相当于把navigationBar给隐藏了,大家都知道,父视图的alpha设置为0的话,那么子视图全都会透明的。那么相应的navigationBar的标题和左右两个按钮都会消失。这样显然达不到我们要求的效果。
(1)如果仅仅是想要navigationBar透明,按钮和标题都在可以使用以下方法:
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];//给navigationBar设置一个空的背景图片即可实现透明,而且标题按钮都在
细心的你会发现上面有一条线如下图:
这就需要我们做进一步处理,把线去掉,如下方法即可:
self.navigationController.navigationBar.shadowImage = [UIImage new];
//其实这个线也是image控制的。设为空即可
(2)如果你想在透明的基础上实现根据下拉距离,由透明变得不透明的效果,那么上面那个就显得力不从心了,这就需要我们采用另外一种方法了
//navigationBar是一个复合视图,它是有许多个控件组成的,那么我们就可以从他的内部入手
[[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;//这里可以根据scrollView的偏移量来设置alpha就实现了渐变透明的效果
3、全局设置navigationBar标题的样式和barItem的标题样式
//UIColorWithHexRGB( )这个方法是自己定义的,这里只需要给个颜色就好了
[[UINavigationBar appearance] setBarTintColor:UIColorWithHexRGB(0xfefefe)];
&&&&[[UINavigationBar appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:18],NSForegroundColorAttributeName:UIColorWithHexRGB(0xfe6d27)}];
&&&&[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:10],NSForegroundColorAttributeName : UIColorWithHexRGB(0x666666)} forState:UIControlStateNormal];
&&&&[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSiz
4、navigationBar隐藏显示的过度
相信在使用中肯定遇到过,一个页面隐藏navigationBar,另一个不隐藏。两个页面进行push和pop的时候,尤其是有侧滑手势返回的时候,不做处理就会造成滑动返回时,navigationBar位置是空的,直接显示一个黑色或者显示下面一层视图,很难看。这就需要我们加入过度动画来隐藏或显示navigationBar:
在返回后将要出现的页面实现viewWillAppear方法,需要隐藏就设为YES,需要显示就设为NO
- (void)viewWillAppear:(BOOL)animated{
&&&&[super viewWillAppear:animated];
&&&&[self.navigationController setNavigationBarHidden:NO animated:YES];
5、侧滑手势返回
iOS的侧滑返回手势有着很好的操作体验,不支持侧滑返回的应用绝对不是好应用。但是在开发过程中在自定义了返回按钮,或者某些webView,tableView等页面,侧滑返回手势失效,这时候就需要我们来进行设置一下了,可以在基类里面协商如下代码:
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
//需要遵循一下手势的代理&&&&&&&&self.navigationController.interactivePopGestureRecognizer.delegate =
&&&&&&&&self.navigationController.interactivePopGestureRecognizer.enabled = YES;
问题:当返回navigationController的最顶层的Controller的时候。再次侧滑,这个时候你在点击一个push页面的操作,你会发现卡那了,半天才会有反应。
这是由于,在最顶层Controller手势依然有效,但是滑动后,并找不到返回的页面。造成软件卡顿,假死所以就要在rootViewController中让此手势失效。把下面的设为NO
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
当然你也可以使用一个第三方库,写的相当棒。他对系统的侧滑返回手势进行拓展,不用从边缘滑动,只要右滑即可返回。最重要的是,他只需要加入项目中即可,不需要一行代码即可实现。附上github 网址
https://github.com/forkingdog/FDFullscreenPopGesture
6、给webView添加头视图
webView是一个复合视图,里面包含有一个scrollView,scrollView里面是一个UIWebBrowserView(负责显示WebView的内容)
UIView *webBrowserView = self.webView.scrollView.subviews[0];//拿到webView的webBrowserView
&&&&self.backHeadImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenWidth*2/3.0)];
&&&&[_backHeadImageView sd_setImageWithURL:[NSURL URLWithString:self.imageUrl] placeholderImage:[UIImage imageNamed:@"placeholderImage"]];
&&&&[self.webView insertSubview:_backHeadImageView belowSubview:self.webView.scrollView];
&&&&//把backHeadImageView插入到webView的scrollView下面
&&&&CGRect frame = self.webBrowserView.frame;
&&&&frame.origin.y = CGRectGetMaxY(_backHeadImageView.frame);
&&&&self.webBrowserView.frame = frame;
&&&&//更改webBrowserView的frame向下移backHeadImageView的高度,使其可见
7、模态跳转的动画设置
设置模态跳转的动画,系统提供了四种可供选择
DetailViewController *detailVC = [[DetailViewController alloc]init];
&&&&//UIModalTransitionStyleFlipHorizontal 翻转
&&&&//UIModalTransitionStyleCoverVertical 底部滑出
&&&&//UIModalTransitionStyleCrossDissolve 渐显
&&&&//UIModalTransitionStylePartialCurl 翻页
&&&&detailVC.modalTransitionStyle = UIModalTransitionStylePartialCurl;
&&&&[self presentViewController:detailVC animated:YES completion:nil];
8、图片处理只拿到图片的一部分
UIImage *image = [UIImage imageNamed:filename];
CGImageRef imageRef = image.CGImage;
CGRect rect = CGRectMake(origin.x, origin.y ,size.width, size.height);
//这里的宽高是相对于图片的真实大小
//比如你的图片是400x400的那么(0,0,400,400)就是图片的全尺寸,想取哪一部分就设置相应坐标即可
CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect);
UIImage *imageRect = [[UIImage alloc] initWithCGImage:imageRefRect];
9、给UIView设置图片
UIImage *image = [UIImage imageNamed:@"playing"];
&&&&_layerView.layer.contents = (__bridge id)image.CGImage;
_layerView.layer.contentsCenter = CGRectMake(0.25, 0.25, 0.5, 0.5);
//同样可以设置显示的图片范围
//不过此处略有不同,这里的四个值均为0-1之间;对应的依然是写x,y,widt,height
10、给TableView或者CollectionView的cell添加简单动画
只要在willDisplayCell方法中对将要显示的cell做动画即可:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
&&&&NSArray *array =&&tableView.indexPathsForVisibleRows;
&&&&NSIndexPath *firstIndexPath = array[0];
&&&&//设置anchorPoint
&&&&cell.layer.anchorPoint = CGPointMake(0, 0.5);
&&&&//为了防止cell视图移动,重新把cell放回原来的位置
&&&&cell.layer.position = CGPointMake(0, cell.layer.position.y);
&&&&//设置cell 按照z轴旋转90度,注意是弧度
&&&&if (firstIndexPath.row & indexPath.row) {
&&&&&&&&&&&&cell.layer.transform = CATransform3DMakeRotation(M_PI_2, 0, 0, 1.0);
&&&&}else{
&&&&&&&&cell.layer.transform = CATransform3DMakeRotation(- M_PI_2, 0, 0, 1.0);
&&&&cell.alpha = 0.0;
&&&&[UIView animateWithDuration:1 animations:^{
&&&&&&&&cell.layer.transform = CATransform3DIdentity;
&&&&&&&&cell.alpha = 1.0;
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{
&&&&if (indexPath.row % 2 != 0) {
&&&&&&&&cell.transform = CGAffineTransformTranslate(cell.transform, kScreenWidth/2, 0);
&&&&}else{
&&&&&&&&cell.transform = CGAffineTransformTranslate(cell.transform, -kScreenWidth/2, 0);
&&&&cell.alpha = 0.0;
&&&&[UIView animateWithDuration:0.7 animations:^{
&&&&&&&&cell.transform = CGAffineTransformIdentity;
&&&&&&&&cell.alpha = 1.0;
&&&&} completion:^(BOOL finished) {
标签:原文地址:http://www.cnblogs.com/fengmin/p/5568983.html
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!}

我要回帖

更多关于 如何自学ios 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信