当前位置:  编程技术>移动开发
本页文章导读:
    ▪Win32Exception 错误        Win32Exception 异常 在此列出,但是已经将异常信息添加到受影响成员的主题中。 Process 组件提供对正在计算机上运行的进程的访问。 用最简短的话来说,进程就是当前运行的应用程序。 线程.........
    ▪ Xcode 4.4中LLVM compiler 4.0带回的Objective-C新语法特性        Xcode 4.4中LLVM compiler 4.0带来的Objective-C新语法特性今年WWDC 2012苹果全球开发者大会上,苹果针对LLVM编译器都做了重大改进,新版的Xcode 4.4中的LLVM编译器升级到了4.0,给Objective-C带来了很多令人.........
    ▪ 新手自定义 为应用首次启动加下教程指南       新手自定义 为应用首次启动加上教程指南在你的AppDelegage.m里面的 application: didFinishLaunchingWithOptions: 方法里面判断 然后进行判断 复制代码     UIScrollView *scrollView = [[UIScrollView alloc] i.........

[1]Win32Exception 错误
    来源: 互联网  发布时间: 2014-02-18
Win32Exception 异常

在此列出,但是已经将异常信息添加到受影响成员的主题中。

Process 组件提供对正在计算机上运行的进程的访问。 用最简短的话来说,进程就是当前运行的应用程序。 线程是操作系统向其分配处理器时间的基本单位。 线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。

对于启动、停止、控制和监视应用程序等任务,Process 组件是很有用的工具。 使用 Process 组件,可以获取正在运行的进程的列表,或者可以启动新的进程。 Process 组件用于访问系统进程。 初始化 Process 组件后,可使用该组件来获取有关当前运行的进程的信息。 此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。

说明

32位进程不能访问模块64位进程运行。 如果尝试有关64位的信息从32位处理,您将收到 Win32Exception 异常。

 


    
[2] Xcode 4.4中LLVM compiler 4.0带回的Objective-C新语法特性
    来源: 互联网  发布时间: 2014-02-18
Xcode 4.4中LLVM compiler 4.0带来的Objective-C新语法特性

今年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

下面是WWDC 2012视频的一些关于新语法特性的截图:

截图可以给你解释,新的语法特性编译器是怎么实现的。





著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!




    
[3] 新手自定义 为应用首次启动加下教程指南
    来源: 互联网  发布时间: 2014-02-18
新手自定义 为应用首次启动加上教程指南
在你的AppDelegage.m里面的 application: didFinishLaunchingWithOptions: 方法里面判断
首先引入两个类的头文件
复制代码
  • #import "LoginViewController.h"//应用首页
  • #import "UserGuideViewController.h"//用户指导页面

  • 然后进行判断

    复制代码
  • //判断是不是第一次启动应用
  •     if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"])
  •     {
  •         [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
  •         
  •         NSLog(@"第一次启动");
  •         
  •         //如果是第一次启动的话,使用UserGuideViewController (用户引导页面) 作为根视图
  •         
  •         UserGuideViewController *userGuideViewController = [[UserGuideViewController alloc] init];
  •         self.window.rootViewController = userGuideViewController;
  •         [userGuideViewController release];
  •     }
  •     else{
  •         NSLog(@"已经不是第一次启动了");
  •         
  •         //如果不是第一次启动的话,使用LoginViewController作为根视图
  •         
  •         LoginViewController *loginViewController = [[LoginViewController alloc] init];
  •         self.window.rootViewController = loginViewController;
  •         [loginViewController release];
  •     }


  • 另外也可以加上应用介绍相关的页面。

    复制代码
  •     UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 640)];
  •     [scrollView setContentSize:CGSizeMake(1280, 0)];
  •     [scrollView setPagingEnabled:YES];  //视图整页显示
  •     //    [scrollView setBounces:NO]; //避免弹跳效果,避免把根视图露出来
  •     
  •     UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
  •     [imageview setImage:[UIImage imageNamed:@"0.png"]];
  •     [scrollView addSubview:imageview];
  •     [imageview release];
  •     
  •     UIImageView *imageview1 = [[UIImageView alloc] initWithFrame:CGRectMake(320, 0, 320, 460)];
  •     [imageview1 setImage:[UIImage imageNamed:@"1.png"]];
  •     [scrollView addSubview:imageview1];
  •     [imageview1 release];
  •     
  •     UIImageView *imageview2 = [[UIImageView alloc] initWithFrame:CGRectMake(640, 0, 320, 460)];
  •     [imageview2 setImage:[UIImage imageNamed:@"2.png"]];
  •     [scrollView addSubview:imageview2];
  •     [imageview2 release];
  •     
  •     UIImageView *imageview3 = [[UIImageView alloc] initWithFrame:CGRectMake(960, 0, 320, 460)];
  •     [imageview3 setImage:[UIImage imageNamed:@"3.png"]];
  •     imageview3.userInteractionEnabled = YES;    //打开imageview3的用户交互;否则下面的button无法响应
  •     [scrollView addSubview:imageview3];
  •     [imageview3 release];
  •     
  •     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];//在imageview3上加载一个透明的button
  •     [button setTitle:nil forState:UIControlStateNormal];
  •     [button setFrame:CGRectMake(46, 371, 230, 37)];
  •     [button addTarget:self action:@selector(firstpressed) forControlEvents:UIControlEventTouchUpInside];
  •     [imageview3 addSubview:button];
  •     
  •     [self.view addSubview:scrollView];
  •     [scrollView setDelegate:self];
  •     [scrollView release];


  • 点击button就进入应用了。

    上面两个方法结合使用是现在大多数应用首次启动页用户指南的方式。


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3