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

關于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

贊助商鏈接:

主站蜘蛛池模板: 喀什市| 江油市| 嘉荫县| 青铜峡市| 郯城县| 宜川县| 皮山县| 阿坝县| 清水县| 平邑县| 呼玛县| 介休市| 左权县| 西平县| 泉州市| 普兰店市| 大安市| 泾源县| 文水县| 建始县| 丰原市| 诸城市| 岳池县| 和静县| 泉州市| 锦州市| 华容县| 夏邑县| 洪湖市| 沽源县| 博客| 湄潭县| 罗田县| 青浦区| 鸡泽县| 高陵县| 桐乡市| 永定县| 青州市| 大冶市| 方正县|