实例代码
// // main.m // AddressBook // // Created by admin on 15/11/26. // Copyright © 2015年 admin. All rights reserved. // ///////////////////fraction.h/////////////////// #import <Foundation/Foundation.h> //-------- @interface Part -------- @interface Fraction: NSObject { @public int numerator; } -(void) setNumerator: (int) n; -(int) numerator; @end //--------- @implementation Part ----- @implementation Fraction -(void) setNumerator:(int)n { numerator = n; } -(int) numerator { return numerator; } @end //-------------- Program Part --------------- int main() { @autoreleasepool { Fraction *myFraction = [[Fraction alloc] init]; [myFraction setNumerator: 1]; myFraction.numerator = 3; NSLog(@"numerator get is %i", myFraction.numerator); NSLog(@"numerator get is %i", myFraction->numerator); NSLog(@"numerator get is %i", [myFraction numerator]); } return 0; }
OC中"."与"->"的区别
OC中对象的操作都是通过指针调用实现的,所有的成员变量都可以通过"->"来获取。这要设置访问权限,默认的权限是保护的。
“.”操作符在之前的OC版本中是没有的,为了适应JAVA/C++等程序员的使用习惯后来新加入的特性。"."在OC中实际上是方法的调用。注意这方法的调用,
因此第49行和51行是等价的,numerator并不是成员变量而是一个22行定义的方法,因此不关心变量的权限。而五十行则是成员变量的访问。
所以,在oc的点操作符就是方法的调用和成员变量不相干,因为我们定义的对象其实就是个被实例话的指针,如此理解就和c和c++的内容统一不会矛盾了。
self.name=aName;//.语法放在等号左边相当于调用setter方法
NSLOg(@"%@",self.name);//.语法放在等号右边相当于调用getter方法
原文:http://www.cnblogs.com/xunyue/p/5024033.html