iOS学习笔记总括整理

 

来源:http://mobile.51cto.com/iphone-386851_all.htm

学习IOS开发那对于二个初学者的话,是一件非常挠头的政工。其实读书IOS开发无外乎平日的累积与总结。上面为我们整理了一局地的iOS学习笔记计算整理,希望对大家有所扶助。

一.内部存款和储蓄器管制状态

1-
autorelease
,当用户的代码在不停止运输转时,自动释放池是不会被灭绝的,那段时日内用户能够安全地利用机关释放的靶子。当用户的代码运转告一段
落,开始等候用户的操作,自动释放池就会被假释掉(调用dealloc),池中的对象都会收下1个release,有大概会就此被销毁。
2-成员属性:
    readonly:不钦定readonly,私下认可合成getter和setter方法。外界毫不关注的积极分子,则毫不设置任何性质,那样封装能扩充代码的独立性和安全性。相当于民用成员?
    assign:表示只进行简短的赋值,不会发送retain音信。
    retain:会向旧值发送release消息,向新值发送retain信息。
    copy:向旧值发release音信,向新值发送copy音讯。
3-引用计数特殊情形
    NSArray:当把三个对象添加到NSArray时,对象的引用计数会加1,移除时会减1。
    UIView:addGestureRecognizer会对手势识别器的引用计数加1,removeGestureRecognizer会减1。
二 .图形API
以此讲的好,清晰显著:http://www.cocoachina.com/bbs/read.php?tid=77731&page=1
1-Quartz2D,的绘图总是发生在图片环境(Graphics
Context)中。视图会在调用drawRect:方法开始展览绘图此前,成立好图形环境,
    通过UIGraphicsGetCurrentContext函数来得到这几个图形环境。
    假诺直接在图像只怕PDF上绘制,需求调用CGBitmapContextCreate大概CGPDFContextCreate函数来创制图形环境。
    Quartz2D制图的功底成分是路线。路径能够是局地基础几何样子,也得以是这一个几何样子的重组。
    当供给创建一条路线时,应当调用CGContextBeginPath函数;
    当须要将路径绘制的源点移动到三个岗位时,应当调用CGContextMoveToPoint函数;
    当想绘制一条线段时,应当调用CGContextAddLineToPoint。
CTM(当前转换矩阵)将绘图从用户空间映射到设备控件。
    当图形环境刚刚成立时,CTM伊始化为一个单位矩阵。
    对CTM实行平移变换应当调用CGContextTranslateCTM函数,实行旋转变换应当调用CGContextRotateCTM函数,实行缩放变换应当调用CGContextScaleCTM函数。
2-UIBezierPath
选拔UIBezierPath绘图的利益:
    -选用系统坐标系
    -在Core Graphics的基础上包裹,具有Core
Graphics的重要功用,无需考虑图形环境。
    UIBezierPath* pathLines = [UIBezierPath bezierPath];
    [pathLines moveToPoint:point1]; // 移动到point1位置
    [pathLines addLineToPoint:point2]; // 画一条从point1到point2的线
    pathLines.lineWidth = 5.0; // 线宽
    [UIColor redColor] set]; // 颜色设置
    [pathLines stroke]; // 开首勾画
    在同一UIBazierPath中,只好接纳同一的颜料和线宽。
    能够调用closePath,从日前点画一条直线到当前子路径的先河点。倘若要填充路径,应当使用fill方法,此方法会填充路径中得全部封闭子路径。
三.容器
    -NSArray和NSMutableArray
        +array:创设三个空数组
        +arrayWithArray:从另二个数组创造新的数组
        +arrayWithContentsOfFile:读文件创立数组
        +arrayWithObject:创制1个数组,个中蕴蓄五个加以对象
        +arrayWithObjects
        +arrayWithObjects:count: 从C数组成立
        -containsObject:是不是包括二个因素
        -count:数量
        -lastObject:重临最终2个
        -objectAtIndex:再次来到某二个
        -objectsAtIndexes:重临一组,类型为NSArray
        -indexOfObject:再次来到对象索引
        -arrayByAddingObject:原数组最后加一个对象,发生一个新的数组
        -arrayByAddingObjectsFromArray:在原数组的终极添加另二个数组中的全部指标,爆发3个新数组
        -subarrayWithRange:抽取原数组中得一些,发生八个新的数组
        -isEqualToArray:相比四个数组是或不是一律
        -writeToFile:atomically:保存数组至三个文书
        -writeToUKoleosL:atomically:保存数组至1个U宝马X5L
        -addObject:在数组最终添加一个对象
        -addObjectsFromArray:在原数组最终添加另一个数组的全部指标
        -insertObject:atIndex:向原数组制定地方添加多少个对象
        -insertObjects:atIndexes:向原数组中一三种岗位添加一两种对象
        -removeAllObjects:移除数组中的全部对象
        -removeLastObject:移除数组中末了八个指标
        -removeObject:移除一个指标
        -removeObjectAtIndex:移除位于钦点地点的目的
        -removeObjectsAtIndexes:移除位于一文山会海岗位的靶子
        -replaceObjectAtIndex:withObject用给定对象替换位于钦点地方的对象
        -replaceObjectsAtIndexes:withObjects:多目的,多岗位版本
        -setArray:用另二个数组中的全部目的来替换当前数组中的全部指标
    -NSDictionary与NSMutableDictionary
        +dictionary
        +dictionaryWithContentsOfFile
        +dictionaryWithContentsOfURL
        +dictionaryWithDictionary
        +dictionaryWithObject:forKey
        +dictionaryWithObjects:forKeys
        +dictionaryWithObjectsAndKeys
        -count:数量
        -allKeys:重临四个数组,包涵字典中的全部重点字。
        -allKeysForObject:重临3个数组,包涵全体对应到给定对象的基本点字。
        -valueForKey:通过字符串查找数值。
        -writeToFile:atomically
        -writeToURL:atomically
        -setValue:forKey: 加键-值对
        -addEntriesFromDictionary: 添加另二个字典中得全体条条框框
        -setDictionary:将原字典中条目设置为另1个字典中得全数条条框框
        -removeObjectForKey:移除三个根本字的相应条目
        -removeAllObjects:移除全体条条框框
        -removeObjectsForKeys:移除一文山会海首要字的相应条目

四.文件系统
1- 概述
     bundle(沙盒):3个接纳只万幸融洽的沙盒中读取或存款和储蓄文件,而不可能操作其余沙盒中的文件。好处:敬重利用的隐衷不受侵略,珍爱系统文件的布署,应用删除后有关文件也能被全体解除。
    各个应用都有协调的沙盒,沙盒的根目录的拿走形式是NSHomeDirectory()。
    根目录下的内容:
         -.app文件,实际上是多少个文件夹,包蕴了可执行文件、Nib文件、图片财富、plist等。XCode中能看到的财富,及编译后的可执行文件,都封装在app中。
        -Documents文件夹,用于存放你的施用所发生的多少,该公文夹可透过iTunes备份,能够储存游戏进程等。
        -Library文件夹,用于存放用户偏好和一时半刻文件。
        -tmp文件夹是系统的中间转播站。
2-文件管理器
    NSFileManager,defaultManager()重回三个文件管理器的单例(十六线程下不安全)。init(),在二十多线程编制程序中应尽量利用init()。
    代理方法:-fileManager:shouldRemoveItemAtPath和-fileManager:shouldRemoveItemAtULX570L在移除操作在此以前被调用。
    -removeItemAtPath:error:删除位于钦点路线的文本、连接、目录(及其全体子目录、文件)。
    -removeItemAtURL:error:同上。
    -contentOfDirectoryAtPath:查找全体位于给定路径的子路径和文件。重回值为一个数组,在那之中饱含了NSString对象。查找只在当前目录进行,不会进去下一层目录。
    -subpathsAtPath:查找给定路径下的全部子路径。深度查找,不限于当前层,也会招来package的内容。
    -fileExistsAtPath:判断文件是不是位于三个路径上边。
    -isReadableFileAtPath:查询文件的可读性
    -isWritableFileAtPath:可写性
    -isExecutableFileAtPath:查询文件的可执行性
    -isDeletableFileAtPath:可删除性
3-NSString的门径功用
    -pathWithComponent:参数是一堆components构成的数组,再次来到的不二法门是由这么些components连接而成的途径字符串,相邻components之间用/隔离。
    -pathComponents:再次回到2个数组,包涵路径中的components。
    -fileSystemRepresentation:返回C字符串
    -isAbsolutePath:判断是不是为相对路径
    -pathExtension:再次回到文件的扩张名,没有的就回到空字符串
    -stringByAppendingPathComponents
:向现有路径添加1个component。斜杠/会被机关抬高
    -stringByAppendingPathExtension:向现有路径加上文件的扩大名
    -stringByDeletingLastPathComponent:移除最终2个路径component
    -stringByDeletingPathExtension:删除途径扩张名
    -stringByAppending帕特hs:参数为贰个数组,此措施将数组中的字符串对象作为路径二次添加到源字符串前面。
例子:

  1. NSString *homePath = NSHomeDirectory(); 
  2. NSString *docPath = [homePath stringByAppendingFormat:@”/Documents”]; 

五.UIActionSheet 按钮列表
六.旋转
    1- interfaceOrientation本性查询当前的界面方向。
    2- rotatingHeaderView主意来询问当前导航视图。
    3- rotatingFooterView来询问当前的标签条。
七.高速拨打电话接口
openU本田UR-VL能扶助你运转Maps,SMS,Browser,Phone甚至别的的应用程序。那是Iphone开发中自个儿经常须求使用的一段代码,它只是唯有一行而已。

  1. [UIApplication sharedApplication] openURL:[NSURL URLWithString:@”tel://8004664411″]; 

其一顺序通过基础的协议援救拨打电话的成效。
摘自:http://blog.csdn.net/smilelance/article/details/6213125
八.区分设备档次的主意
通话功用唯有金立补助,对于别的设备对应按钮应该剥夺。
1. 用[UIDevice
currentDevice].model,这些重临的是3个NSString,你能够做如下判断就能领略设备是华为平板还是索爱.

  1. if ([UIDevice currentDevice].model rangeOfString:@”iPad”].location != NSNotFound) { 
  2.     NSLog(@”This is an iPad!”); 

2.
用UI_USER_INTERFACE_IDIOM()方法,那是系统定义的一条宏。使用方法也很简短。

  1. if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
  2.     NSLog(@”This is an iPad!”); 

摘自:http://blog.sina.com.cn/s/blog\_3f88614f0100sdcm.html

九.并发编制程序
    1-GCD-Grand Central
Dispatch
,GCD使用队列来保管多个职分,而各样任务是
以块(其定义类似于函数)来描述的。GCD从队列中读取那些要到位的职分,然后其多核执行
引擎负责将那些任务分配给它所管理的线程。和手动线程管理相比,GCD能小幅度地优化线程管理,并十分的大地减小创设和销毁线程所带来的额外花费。除了在多核系
统上得质量革新之外,GCD还是能协理升高使用的响应速度,并让代码更为彻底,易于维护。
    2-NSOperationQueue-操作队列,能够大幅度地缩短开发者在出现编程中的负担,并且操作队列有一套Objective-C的API,使用起来方便。
    基本操作单位-NSOperation,操作。
    操作是包裹了一个与任务有关的代码与数量的抽象类,须要持续NSOperation,并且描述相关的职分。操作对象是一次性的,它不得不实行一次,下叁回,须要创造三个新的实例。
    能够由此addDependency:方法为操作添加互相重视。固然操作A信赖于操作B,假诺操作B没有达成,操作A就不会起来履行。完毕是指
执行完,也许撤回了操作。有时须要对操作是或不是成功作出判断。通过removeDependency:方法来移除操作的竞相借重。
    操作的贰特性质是isConcurrent。当使用操作队列来管理这几个操作时,isConcurrent应当设置为NO,那时应当重载
NSOperation的main函数(在类中保留controller对象-weak,并在main中调用controller的办法)。
isReady属性用于描述操作是还是不是曾经得以起来执行,isExecuting属性表示操作是还是不是正在履行个中,isFinished属性表示操作是或不是得手
实现,isCancelled属性则意味操作已经打消。
    能够在操作运转中收回它的运作,只要求给它发送cancel音讯即可。在后续NSOperation类时,也急需扶助cancel方法。
    假设只须要不难的操作,不想继承NSOperation类,能够应用NSInvocationOperation类,这么些类中的-initWithTarget:selector:object:方法能帮忙您方便地选拔人物的指标和对应的职能。
    操作的施行顺序取决于各自的优先级和相互的重视。
    操作队列有三种艺术来施行其中的操作。第贰种是开辟新线程来运作这么些操作,第三种则是通过GCD来运行那几个操作。然而无论如何,都不需求手动管理
线程。尽量接纳操作队列,唯有在操作队列的效用斐然供不应求时才转向GCD。因为操作队列是封装在GCD的底子之上的,纵然增添了部分额外费用,不过也负有更加完善的功力。例子是TestNSOperation。
                           下页内容进一步美貌实用

十.费力提醒器
    UIActivityIndicator。

  1. UIActivityIndicatorView *activityIndicatior = [UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge]; 
  2.     activityIndicator.center = CGPointMake(512, 384); 
  3.     [self.view addSubview: activityIndicator]; 
  4.     [activityIndicator startAnimating];  
  5.     [activityIndicator stopAnimating]; 
  6.     [activityIndicator removeFromSuperView]; 

十一.媒体播放

1- 音频
    [1]
音乐往往是储存在iPod曲库(注意地点)中的,能够通过媒体采用器(media
picker)或许媒体询问(media
query)读取,然后用音乐播放器MPMusicPlayerController播放。

  1. MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer]; 
  2. [musicPlayer setShufleMode: MPMusicShuffleModeSongs]; 
  3. [musicPlayer setRepeatMode: MPMusicRepeatModeAll]; 
  4. [musicPlayer setQueueWithQuery: [MPMediaQuery songsQuery]; 
  5. [musicPlayer play]; 

   
applicationMusicPlayer重回的播放器,在你的利用中播放音乐。它不会潜移默化到iPod播放器,也无法从iPod播放注重获取音讯。
    iPodMusicPlayer重回的是iPod播放器,在你推出使用后,全部的设置都会潜移默化到未来设备上的iPod播放器。
    得到音乐播放器后,必要为它设置一个播放队列。能够用setQueueWithQuery:放方法,通过媒体询问MPMediaQuery来安装
播放队列,也得以用setQueueWithItemCollection:方法,通过MPMdiaItemCollection来设置播放队列。
    重复形式repeatMode能够设置为不另行、重复当前曲目、或任何播放列表;乱序播放shuffleMode能够安装为不乱序、乱序播放曲目或乱序播放专辑;音量volume的装置与节奏播放器一样。
    skipToNextItem跳到下一首,skipToPreviousItem跳到上一首,skipToBegin跳到第壹首。
    对应的宏都以以MPMusic早先。
    [2]
利用系统声音服务来播放短暂音响效果(时间长度30秒之内),并感动:   

  1. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);  

    播放钦定音响效果:

  1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO];  
  2. // 创设音响效果ID 
  3. SystemSoundID soundID; 
  4. AudioServiceCreateSystemSoundID((CFURLRef) fileURL, &soundID); 
  5. // 播放声音 
  6. AudioServicesPlaySystemSound(soundID); 

    [3] 音频播放器
    没有时间长度限制

  1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO]; 
  2. // 用UCR-VL来早先化音频播放器-播放的不是iPod曲库中的音乐 
  3. AVAudioPlayer* player = [AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: NO]; 
  4. // 准备播放 
  5. [player prepareToPlay]; 
  6. // 设置代理 
  7. [player setDelegate: self]; 

   
方法:play、pause、stop。能够通过playing属性查询播放器是或不是正在播放个中,能够经过volume属性来修改和询问播放器的播音增益(从0.0到1.0),可透过setting属性查询播放器其余设置。

    duration代表音频的时间长短,
currentTime代表近期广播到的时刻。播放完成后可以经过代理方法audioPlayerDidFinishPlaying:来处理播放后装置。
2- 视频
    录制播放能够行使网页视图(UIWebView)进行嵌入式播放(能播放YouTube录制),或然选拔电影播放器(MPMoviePlayerController)举行播放。
    [1] 电影播放器

  1. MPMoviePlayerController *player = [MPMoviePlayerController alloc]initWithContentURL: url]; 
  2.     // 设置播放器的高低,并将其加盟视图中 
  3.     [player.view setFrame: rectFrame]; 
  4.     [self.view addSubView: player.view]; 
  5.     播放器的背景视图backgroundView。 
  6.     全屏[player setFullscreen: YES animated: YES]; 
  7.     播放另三个电影[player setContentURL: newURL]; 
  8.     [player requestThumbnailImagesAtTimes:arrayTimes timeOption:MPMovieTimeOptionNearestKeyFrame]; // 表示播放器不会在您所钦定的小时去截取预览,而是在相对时间的附近几帧中摸索效果最棒的帧做为预览。 

scalingMode规定了影片的缩放情势。   

initialPlaybackTime用来支配摄像开播的小运,单位是秒。

假定录制源在互联网上,那么须要正确安装服务器端的mimeType。
十二.运行环-runloop
    运营环功用于2个iOS应用的百分百生命周期。它担负监视种种输入事件,并且在适当的时候对这一个输入进行分红。应用的各个线程都有且仅有二个运维环。你本身不要求创立也不要求销毁运行环,但是能够因而currentRunLoop方法来获取当前的周转环。

十三.定时器
    由于运转环机制,定时器的精度不高,只好用于一般延时。
    例子:拼图游戏,DeskViewController.m。
    NSObject类的定时方法。
    performSelector: withObject: afterDelay:
运市场价格势,参数,时间(秒)。
    performSelectorOnMainThread: withObject: waitUntilDone:
在主线程中,运维参数selector所钦点的不二法门,若是waitUntilDone参数为YES,那么当前线程会被阻挡,直到selector运行完。
    performSelector: onThread: withObject:
waitUntilDone:同上,但不必然在主线程中运作。
    performSelectorInBackground: withObject:
开启叁个新线程,用于周转selector方法,selector方法应负责线程的初阶化。
    cancelPreviousPerformRequestsWithTarget:撤除与2个指标相关的富有安排好的动作。
    cancelPreviousPerformRequestsWithTraget: selector:
object只收回一定的安插动作。
十四.随机数
0~1之间自由数

  1. CG_INLINE float genRandomNum() 
  2.     return (float)arc4random/ARCRANDOM_MAX; 

十五.加速度传感器
    获得加快度传感器读数:

  1. UIAccelerometer *accelerometer = [UIAccelerometer shareAccelerometer]; // 单例 
  2. accelerometer.delegate = self; 
  3. accelerometer.updateInterval = 1.0f / 10.0f; // 传感器更新频率,普通游戏10~30HZ,虚拟现实类游戏,30~60HZ 
  4. accelerometer.x, accelerometer.y, accelerometer.z // 传感器读数 

    若不想再承受传感器读数,可将代理设置为nil

  1. [UIAccelerometer shareAccelerometer].delegate = nil;  
  2.  
  3. #define alpha 0.05 
  4. // 获得引力引起的加快度读数: 
  5. – (void)accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration 
  6.     // 简单低通滤波器 
  7.     accelX = (acceleration.x * alpha) + (accelX) * (1.0 – alpha); 
  8.     accelY = (acceleration.y * alpha) + (accelY) * (1.0 – alpha); 
  9.     accelZ = (acceleration.z * alpha) + (accelZ) * (1.0 – alpha); 
  10.      
  11. // 获得动作引起的加快度读数: 
  12. – (void)accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration 
  13.     // 减去低通滤波输出,获得德州仪器滤波输出 
  14.     accelX = acceleration.x – ((acceleration.x * alpha) + (accelX) * (1.0 – alpha)); 
  15.     accelY = acceleration.y – ((acceleration.y *ACCESS, alpha) + (accelY) * (1.0 – alpha)); 
  16.     accelZ = acceleration.z – ((acceleration.z * alpha) + (accelZ) * (1.0 – alpha)); 

十六.地图与连接服务器
[1]
添加框架MapKit.framework。使用MKMapView来表现地图。注意相应直接利用此类,而不是一而再之。要是指望在MKMapView类之上添加效果,能够运用MKMapViewDelegate协议。
    初始化:

  1. MKMapView *mapView = [MKMapView alloc] initWithFrame: rect]; 

    初阶化之后并不直接彰显,还索要钦命展现的地形图区域:

  1. CLLocationCoordinate2D coordinate; 
  2. coordinate.latitude = latitudeValue; // 纬度 
  3. coordinate.longtitude = longtitudeValue; // 精度 
  4. mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, width, height); // 钦定显示区域,width和height单位都是米 

    之后能够通过addSubview添加地图。
    属性:showsUserLocation-为YES,系统会随地跟踪用户的任务
          userLocationVisible-为YES,将展示用户所在地方
    呈现地图之后,平日希望在地图上添加标注,那需求创立三个类,并贯彻MKAnnotation协议,这些类叫做标注对象。标注对象往往实现setCoordinate:方法来设置其坐标。在地形图视图上,能够安装标注对象的坐标,然后添加进去,那样地图上就会现出四个标明。代理方法title
和subtitle能够在标注上彰显标题和副标题。  

  1. // 初始化 
  2.    mapView = [MKMapView alloc] initWithFrame: CGRectMake(100, 100, 550, 700)]; 
  3.    mapView.showsUserLocation = TRUE; 
  4.    mapView.mapType = MKMapTypeStandard; 
  5.    mapView.delegate = self; 
  6.    // 设置坐标 
  7.    CLLocationCoordinate2D coordinate; 
  8.    coordinate.latitude = 37.31; 
  9.    coordinate.longtitude = -122.03; 
  10.    mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, 四千, 5000); // 四千米宽,伍仟米高的区域 
  11.    [self.view insertSubview: mapView atIndex: 0]; 

十七.通过storyboard来开头化二个controller

  1. CBigDesignImageViewController *imageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@”BigImageController”];  

   BigImageController是要在storyboard中设置的Identifier属性。

十八.给UIView子类设置阴影,包涵各个控件
    1 导入QuartzCore framework
    2 #import <QuartzCore/QuartzCore.h>
    3 编码:

  1. [imgView layer] setShadowOffset:CGSizeMake(5, 5)]; // 阴影的限制  
  2. [imgView layer] setShadowRadius:2]; // 阴影扩散的限定控制  
  3. [imgView layer] setShadowOpacity:1]; // 阴影发光度  
  4. [imgView layer] setShadowColor:[UIColor brownColor].CGColor]; // 阴影的颜色 

十九.设置UIScrollView滚动速度      

  1. // 自动滚动太快,效果倒霉,那里把动画设置慢点,注意上边要直接赋值contentOffset,不要用带animated参数的函数,不然动画会出标题,因为两处都是动画片效果。 
  2.         [UIScrollView animateWithDuration:1.0f  
  3.                                delay:0  
  4.                                options:UIViewAnimationCurveLinear 
  5.                                animations:^{ 
  6.                                    scrollView.contentOffset = CGPointMake(0, 0);  
  7.                                } 
  8.                                completion:^(BOOL finished){} 
  9.                                ];  
  10.         // 要是在减速滚动进度中,按了刷新按钮,执行下面的动画,会并发重置的任务,y不是0的气象,这里再调用1遍,滚动到0。 
  11.         [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];  

二十.EXC_BAD_ACCESS
Here’s the advice I generally give to developers when you hit an
EXC_BAD_ACCESS error:
-Set the NSZombieEnabled argument in your executable options, which
sometimes helps narrow down the cause
-Run with Apple Instruments such as Leaks to look for memory issues
-Set a breakpoint in your code and step through until you narrow down
where it’s crashing
Tried and true “comment out code till it works” then backtrack from
there :]

Xcode4 下设置 NSZombieEnabled 的方法: 
你可以点击 Xcode4 菜单 Product -> 艾德it Scheme -> Arguments,
然后将点击”加号”, 将 NSZombieEnabled 参数加到 Environment Variables
窗口中, 后边的数值写上 ”YES”.
要么在 Xcode4 菜单 Product -> 艾德it Scheme -> Diagnostics
设置窗口中央直机关接勾上 Enable Zombie Objects 即可,Xcode 可用
cmd+shift+< 进到那一个窗口。 
Xcode4
已经考虑到了现行反革命的要求,所以提供了更省事的设置的章程,你也可以在那个窗口中安装任何一些参数,你肯定能经过获得越多的帮扶新闻。

 

好了,看完那篇iOS学习笔记整理,不精通对你是或不是有着启发。

相关文章