@Object-C中,public,protected,private用来控制继承类的访问权限,对于类成员的访问,并不能起到作用。而在C++,Java中,此三个描述符亦可以用来控制成员变量的访问权限。

@强类型和弱类型,强类型变量使用类名称,弱类型变量使用id代替,弱类型提供了在运行时更大的灵活性和动态性的功能,需要在机制上家以保证,这也是和静态类型的语言有差异的地方吧。

@在Object-C中,对象的引用叫做指针,需要记住在声明强类型对象的变量是加上*就可以了,弱类型id本身就是一个指针。可以声明两种类型的方法,尸体方法和类方法,实体方法是特定类的实例中可以执行的方法,类方法无需创建实例,当然也可在创建实例后使用。

@很奇葩的一种方法出现了,那天看的我好郁闷,现在懂了。一般来说,函数的声明包括返回类型,函数名和输入参数类型和名称组成,Object-C类似,只是在Object-C中,函数名和参数类型及名称可能是分开写的,例如函数insertObject:atIndex:

- (void) insertObject:(id)onObject atIndex:(NSUInteger)index

其中函数类型标识符(类方法或实例方法)为-,即实例方法;返回类型是void,函数名又称方法签名关键字,这里包括了insertObject和atIndex两部分,参数类型是id和NSUInteger,参数名称是anObject和index两部分。结构类似,只是表现形式不同,需要完成思维的转换。

上面的方法实际名称是:insertObject:atIndex:,即所有签名关键字的链接,冒号说明了当前的参数。

方法调用时,通过向对象通信,通信内容是方法签名和方法要求的参数信息。方法调用格式如下:

[myArray insertObject:anObject atIndex:0],中括号中,最左边是接受信息的对象,信息包括参数在右边,上面即表示发送信息insertobject:atindex:到变量名为myArray的对象中去。

为了避免多个局部变量来保存临时结果,Object-C允许你嵌套信息,来自每个嵌套信息中的返回值可以作为参数,目标或另一个信息,可以用信息代替前面例子中任意使用过的变量。从而,假如说有一个叫myAppObject的对象,他有访问数组对象和将对象嵌入数组的方法,可以将上述的例子写成下面这样:

[[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0]

Object-C也提供句点来调用存取器方法,存取器获取和设置某一个对象的状态,典型的格式为-(type)propertyname和-(void)setPropertyName:(type)。使用句点语法,你可以将上述的例子重写成:

[[myAppObject.theArray] insertObject:[myAppObject objectToInsert] atIndex:0]

亦可以使用句点语法赋值,所谓存取器方法,自然包括两部分,存储和取出,如下所示:

myAppObject.theArray=aNewArray;

有没有发现越来越自然语言,赋值也可以写成:

[myAppObject setTheArray:aNewArray]

发消息时可以发给类实例或者类本身,相对应地也就需要指定方法是实例方法或者类方法。

类方法包括类实例创建,访问类共享信息,同实例方法声明唯一的不同就是-+号的区别。

使用类方法作为类的工厂方法,如下方法array是NSArray的类方法--继承自NSMutableArray-用于分配和初始化该类的新实例并将它返回到代码中区。

MSMutableArray *myArray=null;

//创建新数组并赋值给变量myArray

myArray= [NSMutableArray array];

.h文件是接口文件,包括interface和end,.m文件是实现文件,包括implementation和end。编译器通过这些信息,来实现定位相对应类的封闭方法。方法的声明要匹配借口文件中的说明,无需包含代码块的内容。

@property (readonly) UIView* rootView;

@synthesize flag,nameObject,rootView

字符串:

NSString提供对象封装字符串,可以具有所需要的所有缺点,为任意长度的字符串创建内存管理,支持多个格式化工具集,Object-C快捷创建NSString需要在普通的C字符串前加@符号。

NSString *myString = @"My String\n";
NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];
NSString *fromCString = [NSString stringWithCString:"A C string" encoding:NSASCIIStringEncoding];
协议
这里的协议如同一个借口,可以被任意类实现,其通过顶一个一个借口让其他对象可靠地实现,实现方法,即可说明符合协议了。
协议类似借口,但是协议没有父类,并且不能定义尸体变量。
Application通过委托获取了View,委托的实现来自于协议的要求,声明中则包含了View。
posted on 2013-04-23 17:33  kangwang1988  阅读(1944)  评论(0编辑  收藏  举报