Objective-C中的命名前缀说明 & 与C++的不同之处 &Modern Objective-C 基础知识

http://www.entlib.net/?p=1561


Objective-C中的命名前缀说明:

NS:NextStep
CF:Core Foundation
CA:Core Animation
CG:Core Graphics
UI:User Interface

Objective-C与C++的不同之处有:

Objective-C中所有的类都必须继承自NSObject。
Objective-C中所有对象都是指针的形式。
Objective-C用self代替this。
Objective-C使用id代替void*。
Objective-C使用nil表示NULL。
Objective-C只支持单继承。
Objective-C使用YES/NO表示TRUE/FALSE
Objective-C使用#import代替#include
Objective-C中用消息表示类的方法,并采用[aInstance method:argv]调用形式。
Objective-C支持反射机制。
Objective-C支持Dynamic Typing, Dynamic Binding和Dynamic Loading。

Objective-C中的函数声明格式有:

-/+ (return type) function_name;
-/+ (return type) function_name : (parameter type) parameter;
-/+ (return type) function_name :
(parameter type) parameter1 otherParameter :
(parameter_type) parameter2

以上参数说明: – 表示一般函数,+ 表示静态函数。otherParameter是参数的别名(第一个参数的别名省略),在函数调用时方便指定。

IBOutlet,IBAction: 这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候前面加上IBOutlet,在Interface Builder里就能看到这个对象的outlet,如果你希望在 Interface Builder里控制某个对象执行某些动作,就在方法前面加上(IBAction)。



Modern Objective-C 基础知识

From[一步一步学习  iOS 6  编程]

1,默认属性自动绑定(Default Property Synthesis)

在 Modern Objective-C  引入后,就可以不必编写@synthesize  指令了

当使用默认属性自动绑定时,可以使用属性名,前面添加一个下划线的前缀,就可以访问实例变量。例如访问前面定义的 imageView 实例变量,使用
_imageView  或  self.imageView  就可以访问了。


2,方法顺序(Method Ordering)

之前,要求方法定义的位置在它被调用之前,就是先定义方法,然后才可以调用。

对于 Modern  Objective-C 而言,方法的顺序不再是问题了,你调用的方法可以在之后定义。


3,NSNumber  简化用法

NSNumber *number = [NSNumber numberWithInt:100];
通过 Modern Objective-C,可以简化代码获得相同的结果:NSNumber *number = @100;

实际上,所有 NSNumber 类的 numberWithXXX  方法,都可以使用 Modern Objective-C  代码简化:
NSNumber *number;
number = @’A’; // Character
number = @YES; // Boolean
number = @111222333ul; // Unsigned Long
number = @123456l; // Long Long
number = @123.45 // Float
number = @123 // Integer
number = @123.432 // Double
现在直接使用@开头,加上数字,就完成了 NSNumber 对象的初始化


4,NSArray  数组简化

如:NSArray *carMakes;
carMakes = @[@"Chevy", @"BMW", @"Toyota", @"Volvo", @"Smart"];

注意:使用@[] 创建的是不可变数组!!如果需要创建可变数组,需要使用mutableCopy:

NSMutableArray  *carMakes  =  [@[@"Chevy",  @"BMW",  @"Toyota",@"Volvo", @"Smart"] mutableCopy];


访问数组元素也相同地做了简化。例如,下面的代码用来访问数组元素 0:NSString *firstCar = [carMakes objectAtIndex:0];
使用 Modern Objective-C,代码可以简化为:NSString *firstCar = carMakes[0];

给数组元素赋值的方法也进行了简化:carMakes[1] = @”VW Jetta”;


5,NSDictionary 字典简化

之前初始化NSDictionary 对象的代码如下所示:
NSDictionary *bookListing = [NSDictionary dictionaryWithObjectsAndKeys: object1, key1, object2, key2, object3, key3, nil];

可以简化代码如下:NSDictionary *bookListing = {key1 : object1, key2 : object2, key3 : object3};

和数组一样,下标可用来访问字典项,如下使用 key1 下标来访问 bookListing字典对象:
bookObject = bookListing[key1];

如下代码可更新 bookListing 字典对象中 key2 键所对应的对象值:
bookListing[key2] = newBookObject;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值