成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

關于Objective-C的self的用法總結

2011-02-24 17:40:30來源:作者:

  這里自己再進行編輯下,希望日后能看得更清楚些,也希望看原貼不是太清楚的同鞋,能看了我的理解,有更多了解:

  這里自己再進行編輯下,希望日后能看得更清楚些,也希望看原貼不是太清楚的同鞋,能看了我的理解,有更多了解:

  MyObject文件:
  代碼
  /*MyObject*/
  //MyObject.h
  @interface MyObject : NSObject {}
  @end
  //MyObject.M
  @implementation MyObject
  @end

  MyClass文件:
  代碼
  /*MyClass*/
  //MyClass.h
  @interface MyClass : NSObject {
  @public
  MyObject * _myObject;
  }
  @property (nonatomic, retain) MyObject *myObject;
  @end
  //MyClass.m
  @implementation MyClass
  @synthesize myObject = _myObject;
  -(id)init{
  if(self = [super init]){
  MyObject * aMyObject = [[MyObject alloc] init]; //aMyObject retainCount = 1;
  NSLog(@"1:aMyobject:%d",[aMyObject retainCount]);
  self.myObject = aMyObject; //myObject retainCount = 2;
  NSLog(@"2:aMyobject:%d",[aMyObject retainCount]);
  [aMyObject release];//myObject retainCount = 1;
  NSLog(@"3:aMyobject:%d",[aMyObject retainCount]);
  _myObject = [[MyObject alloc] init];
  NSLog(@"21:aMyobject:%d",[_myObject retainCount]);
  self.myObject = [[MyObject alloc] init];
  NSLog(@"22:aMyobject:%d",[_myObject retainCount]);
  }
  return self;
  }

  測試代碼:
  代碼
  /*對象引用對象時,使用存取方法和使用對象屬性的區別*/
  MyClass* class = [[MyClass alloc] init];
  class.myObject = [[MyObject alloc] init];
  NSLog(@"31: '.' class object count %d", [class.myObject retainCount] );
  class->_myObject = [[MyObject alloc] init];
  NSLog(@"32: '->' class object count %d", [class.myObject retainCount] );

  所有輸出結果:
  代碼
  2010-10-19 11:30:28.910 Test[1293:207] 1:aMyobject:1
  2010-10-19 11:30:28.910 Test[1293:207] 2:aMyobject:2
  2010-10-19 11:30:28.911 Test[1293:207] 3:aMyobject:1
  2010-10-19 11:30:28.911 Test[1293:207] 21:aMyobject:1
  2010-10-19 11:30:28.912 Test[1293:207] 22:aMyobject:2
  2010-10-19 11:30:28.912 Test[1293:207] 31: '.' class object count 2
  2010-10-19 11:30:28.913 Test[1293:207] 32: '->' class object count 1

  結論:
  不使用self.則直接使用類屬性,賦值操作。
  使用self.引用屬性,使用@property定義的存取操作,可以使用@synthesize 自動實現存取操作的細節
  要使用某類對象的其中類的某個屬性時,如上的MyClass使用MyObject中的_myObject屬性時,只有_myObject為@public修飾,且使用"->"操作符時,才是對象屬性的使用,其他情況一般都是使用了存取操作。
 

關鍵詞:iOSObjective-C

贊助商鏈接:

主站蜘蛛池模板: 秭归县| 黄浦区| 邵阳市| 榆树市| 罗城| 台东县| 聂拉木县| 鄄城县| 靖宇县| 东乡| 通州市| 色达县| 邮箱| 双江| 咸宁市| 隆子县| 长泰县| 罗定市| 宝清县| 大邑县| 漳州市| 高密市| 思南县| 白城市| 桃园市| 嘉兴市| 永修县| 共和县| 延川县| 尖扎县| 娄烦县| 澄江县| 南平市| 商都县| 香港| 康马县| 北海市| 莲花县| 巴马| 定兴县| 蒲城县|