Xcode4.4、4.5新特性,LLVM 4.0新语法

在Xcode4.5以上,增加了许多新的特性,其中包括很方便的代码输入,可以大大提高写代码的效率。

1.NSNumber

从Xcode4.4起,所有的NSNumber都可以用@123来表示,如:

    //单个字符

    NSNumber *numA = @'A';              //相当于[NSNumber numberWithChar:'A'];

   //整形

    NSNumber *numInt =@123;            //相当于[NSNumber numberWithInt:123];

    NSNumber *numUnsigned =@123U;      //相当于[NSNumber numberWithInt:123U];

    NSNumber *numLong =@123L;          //相当于 [NSNumber numberWithLong:123L];

    NSNumber *numLongLong =@123LL;     //相当于[NSNumber numberWithLongLong:123LL];

   //浮点

    NSNumber *numFloat =@1.2345F;      //相当于 [NSNumber numberWithFloat:1.2345F];

    NSNumber *numDouble =@1.2345;      //相当于 [NSNumber numberWithDouble:1.2345];

    //bool

    NSNumber *numYes =@YES;            //相当于[NSNumber numberWithBool:YES];

    NSNumber *numNO =@NO;              //相当于[NSNumber numberWithBool:NO];


2.NSArray,NSDictionary

//    NSArray *arr = [NSArray arrayWithObjects:@"one",@"name",@"123", nil];

   NSArray *newArr =@[@"one",@"name",@123];


//    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Jim",@"name",[NSNumber numberWithInt:20],@"age", nil];

   NSDictionary *newDic =@{

                            @"name":@"Jim",

                            @"age":@20

                            };

怎么样,是不是简单了很多啊?而且,为了方便你的旧代码迁移新的写法,Xcode还专门提供了转换工具,选择Edit--> Refactor--> Convert to Modern Objective-CSyntax即可。


3.嵌套表达式(Boxed Expressions)

最新版本的OC还提供了一种新的书写方式:@(expression)

有时候BooL和int的值是由计算得到的,这时候就可以将计算的表达式放到括号内,比如:

    NSNumber *diff =@(1.2f-2.0f);        //相当于[NSNumber numberWithFloat:1.2f-2.0f];


4.创建新的property不用再合成

Xcode4.4之后,在头文件中创建property,无需再合成@synthesize,Xcode会自动合成@synthesize object = _object;


5.遍历元素

通常遍历元素有两种方式,一种是用for in,一种是用变量来循环数组下标,如:

    NSArray *arr =@[@"one",@"two",@"three"];

   for (NSString *strin arr)

    {

      //...

    }

   for (int i =0;i < 3;i++)

    {

      //...

    }

如果是字典的话,遍历的代码会稍微复杂点,如:

    NSDictionary *dic =@{

                         @"name":@"Jim",

                         @"age":@"20",

                         @"sex":@"boy"};

   NSArray *keys = [dic allKeys];

   for (NSString *keyin keys)

    {

       NSString *value = [dic objectForKey:key];

    }

现在,Xcode4.5以上支持用block来遍历元素了,用block来遍历元素可以简化代码的编写,如:

    [arrenumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop) {

       //...

    }];

    

    [dicenumerateKeysAndObjectsUsingBlock:^(id key,id obj, BOOL *stop) {

       //...

    }];

而且以前的[arrobjectAtIndex:i] 和 [arr replaceObjectAtIndex:i withObject:object],现在可以直接写成arr[i]和arr[i] = object 了。如:

    NSArray *arr =@[@"one",@"two",@"three"];

    [arrenumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop) {

       NSString *str = arr[idx];

    }];

这个改进对NSDictionary同样有效,如:

    NSDictionary *dic =@{

                         @"name":@"Jim",

                         @"age":@"20",

                         @"sex":@"boy"};

    [dicenumerateKeysAndObjectsUsingBlock:^(id key,id obj, BOOL *stop) {

       NSString *str = dic[key];

        NSLog(@"key = %@,str = %@",key,str);

    }];


Tips:

上面提到写property的时候不用再合成@synthesize了,那原来写的那么多的@synthesize怎么办呢?删掉?怎么删呢?一个文件一个文件打开,然后一行行的删掉吗?放心,苹果已经帮我们想好了解决方案。(当然,你也可以选择不删,不会有任何的影响)

在WWDC2012 Session 400 Developer Tools Kickoff中,苹果介绍了具体做法,步骤如下:

1.首先使用区域查找,因为一般项目都会依赖第三方的开源库,我们不想更改别人的库,所以我们只查找我们库的文件,如下图所示:


2.接着我们用正则匹配,找到以@synthesize开头,后面接着var=_var;格式的行。

插入正则表达式很简单,直接点击查找输入框左边的放大镜,选择"insert pattern",苹果就会把常见的正则表达式都列出来,你直接选择就可以了,非常的方便。如图:


在插入合适的正则表达式后,回车,就可以看到搜索结果啦。


3.点击搜索界面的preview按钮,查看替换结果,可以看到,对于我们的测试代码,Xcode生成的预览图已经正确的当对应的代码删掉了。然后我们点击替换,就可以去掉所有的@synthesize代码啦。



内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为质生产力的代表,已成为中国经济的增长点。报告从发展环境、资金投入、创能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错位的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
数据集一个高质量的医学图像数据集,专门用于脑肿瘤的检测和分类研究以下是关于这个数据集的详细介绍:该数据集包含5249张脑部MRI图像,分为训练集和验证集。每张图像都标注了边界框(Bounding Boxes),并按照脑肿瘤的类型分为四个类别:胶质瘤(Glioma)、脑膜瘤(Meningioma)、无肿瘤(No Tumor)和垂体瘤(Pituitary)。这些图像涵盖了不同的MRI扫描角度,包括矢状面、轴面和冠状面,能够全面覆盖脑部解剖结构,为模型训练提供了丰富多样的数据基础。高质量标注:边界框是通过LabelImg工具手动标注的,标注过程严谨,确保了标注的准确性和可靠性。多角度覆盖:图像从不同的MRI扫描角度拍摄,包括矢状面、轴面和冠状面,能够全面覆盖脑部解剖结构。数据清洗与筛选:数据集在创建过程中经过了彻底的清洗,去除了噪声、错误标注和质量不佳的图像,保证了数据的高质量。该数据集非常适合用于训练和验证深度学习模型,以实现脑肿瘤的检测和分类。它为开发医学图像处理中的计算机视觉应用提供了坚实的基础,能够帮助研究人员和开发人员构建更准确、更可靠的脑肿瘤诊断系统。这个数据集为脑肿瘤检测和分类的研究提供了宝贵的资源,能够帮助研究人员开发出更准确、更高效的诊断工具,从而为脑肿瘤患者的早期诊断和治疗规划提供支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值