在此列出,但是已经将异常信息添加到受影响成员的主题中。
Process 组件提供对正在计算机上运行的进程的访问。 用最简短的话来说,进程就是当前运行的应用程序。 线程是操作系统向其分配处理器时间的基本单位。 线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。
对于启动、停止、控制和监视应用程序等任务,Process 组件是很有用的工具。 使用 Process 组件,可以获取正在运行的进程的列表,或者可以启动新的进程。 Process 组件用于访问系统进程。 初始化 Process 组件后,可使用该组件来获取有关当前运行的进程的信息。 此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。
32位进程不能访问模块64位进程运行。 如果尝试有关64位的信息从32位处理,您将收到 Win32Exception 异常。
今年WWDC 2012苹果全球开发者大会上,苹果针对LLVM编译器都做了重大改进,新版的Xcode 4.4中的LLVM编译器升级到了4.0,给Objective-C带来了很多令人惊喜的特性。
注意,下面的语法需要下载Xcode 4.4。
1、枚举类型的改变老写法:
typedef enum Week{ Moday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }Week;老方法的问题是枚举值的数据范围是模糊的,这个数值可能非常大,可能是负数,无法界定
新写法:
typedef enum Week:NSUInteger{ Moday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }Week;新方法在列出枚举内容的同时绑定了枚举数据类型NSUInteger,这样带来的好处是增强的类型检查和更好的代码可读性。
2、使用的方法代码放置的位置顺序无关
没在.h文件中声明的方法,在时候的时候如果方法不在前面,可能会有警告。
比如:
@interface MyClass : NSObject -(void)doSomething:(NSString *) print; @end
实现:
@implementation MyClass -(void)doSomething:(NSString *)print{ NSLog(@"%@", [print stringByAppendingFormat:[self getString]]); } -(NSString *)getString{ return@"string for something"; } @end
早期编译器编译时会出现:warning: instance method ‘-getString:’ not found…
新的编译器会先扫描代码中的方法,然后再编译,这样就避免了找不到方法这种情况了
3、property属性简化@property对于使用Objective-C的程序员来说是相当熟悉的,property方便自动生成变量的getter 和setter。在.h文件中声明之后,还要在.m文件中加上@synthesize关键字,这样才能完成自动getter 和setter的过程。
比如说,我在.h文件中写了
@property (strong, nonatomic) NSDictionary *order;
我还要去对于的.m文件中写上@synthesize order;
是不是感觉很多余啊?现在在语法新特性中不用写这行代码了,新版的编译器帮你实现这行代码,这叫帮人帮到底。也是说,你在.h文件中声明order属性后,就可以直接在实现文件中使用该属性的getter和setter方法,编译器还会根据属性的可读和可写自动判断是否提供setter方法。智能多了。
4、语法的简化做过java 或C#开发的都知道,初始化或赋值一个变量一般用一个“=”号就搞定了,到了Objective-C后,每次都要用一个很长的函数才能赋值活初始化。现在简化多了。咱们看看各个数据类型简化前后的对比。
4.1、NSNumber 类型老写法:
NSNumber *number; number = [NSNumber numberWithChar:'X']; number = [NSNumber numberWithInt:12345]; number = [NSNumber numberWithUnsignedLong:12345ul]; number = [NSNumber numberWithLongLong:12345ll]; number = [NSNumber numberWithFloat:123.45f]; number = [NSNumber numberWithDouble:123.45]; number = [NSNumber numberWithBool:YES];
新写法:
NSNumber *number; number = @'X'; number = @12345; number = @12345ul; number = @12345ll; number = @123.45f; number = @123.45; number = @YES;4.2、NSArray类型
老写法:
NSArray *array; array = [NSArray arrayWithObjects:@"object1", @"object2", @"object3", nil];
新写法:
NSArray *array = @[ @"object1", @"object2", @"object3" ];
新的写法去掉了后面讨厌的nil。
4.3、NSDictionary类型
老写法
NSDictionary *dict = [NSDictionary dictionaryWithObjects:@[@"value1", @"value2", @"value3"] forKeys:@[@"key1", @"key2", @"key3"]];新写法
NSDictionary *dict = @{@"key1": @"value1",@"key2": @"value2",@"key3": @"value3" }; NSLog(@"%@", dict);
运行结果正常:
{
key1 = value1;
key2 = value2;
key3 = value3;
}
5、快速通过下标定位对象他们说新的语法这样是可以的,数组和字典都可以通过下标访问,
NSArray *array =@[ @"object1", @"object2", @"object3" ]; id obj = array[0]; //通过下标方式获取数组对象,替换原有写法:array objectAtIndex:i]; NSString *obj1 = @"oooo"; array[0] = obj1; //也可以直接为数组对象赋值。替换原有写法:[array replaceObjectAtIndex:i withObject:newObj]; NSDictionary *dict = @{@"key1": @"value1",@"key2": @"value2",@"key3": @"value3" }; id obj2 = dict[@"key1"];//获取o2对象,替换原有写法:[dic objectForKey:k2]; dict[@"key2"] = obj; //重新为键为k2的对象赋值,替换原有写法:[dic setObject:newObj forKey:k2]可是事实是这样的:
现实总是残忍的。于是google 了一下,发现这个语法是针对iOS 6 or OS X 10.8 SDKs的,我没有ios 6模拟器而已没有10.8 SDKs。所以报错了。可以参考这里:http://stackoverflow.com/questions/11425976/compiler-error-expected-method-not-found-when-using-subscript-on-nsarray
截图可以给你解释,新的语法特性编译器是怎么实现的。
著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!
在你的AppDelegage.m里面的 application: didFinishLaunchingWithOptions: 方法里面判断
首先引入两个类的头文件
然后进行判断
另外也可以加上应用介绍相关的页面。
点击button就进入应用了。
上面两个方法结合使用是现在大多数应用首次启动页用户指南的方式。