精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Objective-C 中關于self.用法

移動開發 iOS
本文介紹的是Objective-C 中關于self.用法,主要是以代碼實現,我們先來看內容。

Objective-C 中關于self.用法是本文要講述的內容,不多說,直接進入話題,我們經常會在官方文檔里看到這樣的代碼:

  1. MyClass.h  
  2.  
  3. [/lang]  
  4. @interface MyClass : NSObject {  
  5.     MyObject *myObject;  
  6. }  
  7. @property (nonatomic, retain) MyObject *myObject;  
  8. @end  
  9. MyClass.m  
  10. @synthesize myObject;  
  11. -(id)init{  
  12.     if(self = [super init]){  
  13.         MyObject * aMyObject = [[MyObject alloc] init];  
  14.         self.myObject = aMyObject;  
  15.         [aMyObject release];  
  16.     }  
  17.     return self;  
  18. }  

有人就問, 為什么要這么復雜的賦值? 為什么要加self. ? 直接寫成self.myObject = [[MyObject alloc] init];不是也沒有錯么? 不加self有時好像也是正常的? 現在我們來看看內存管理的內容:

先看間接賦值的:

1.加self.:

  1. MyObject * aMyObject = [[MyObject alloc] init]; //aMyObject retainCount = 1;  
  2. self.myObject = aMyObject; //myObject retainCount = 2;  
  3. [aMyObject release];//myObject retainCount = 1

2. 不加self.:

  1.  MyObject * aMyObject = [[MyObject alloc] init]; //aMyObject retainCount = 1;  
  2. myObject = aMyObject; //myObject retainCount = 1;  
  3. [aMyObject release];//對象己經被釋放  

再看直接賦值的:

3.加self.:

  1. self   
  2. .myObject 
  3. = [[   
  4. MyObject  
  5. alloc] init]   
  6. ;  
  7. //myObject retainCount = 2;  

4. 不加self.:

  1. myObject = [[MyObject alloc] init]; //myObject retainCount = 1

現在是不是有點暈, 我們先來把代碼改一下, 官方的一種常見寫法:

  1. MyClass.h  
  2.  
  3. @interface MyClass : NSObject {  
  4.     MyObject * _myObject;  
  5. }  
  6. @property (nonatomic, retain) MyObject *myObject;  
  7. @end  
  8. MyClass.m  
  9. @synthesize myObject = _myObject;   

OK, 你現在再試下, 如果你用self._myObject = aMyObject; 或者 myObject = aMyObject; 你會得到一個錯誤, 為什么呢, 這里就是和Obj-c的存取方法有關了. 說白了很簡單 , 大家都知道, @property (nonatomic, retain) MyObject *myObject; 是為一個屬性設置存取方法, 只是平時我們用的方法名和屬性名是一樣的,現在你把它寫成不同的名字, 就會很清楚了. _myObject是屬性本身, myObject是存取方法名.

現在我們知道self.是訪問屬性的存取方法了, 那存取方法又怎么工作的? self.myObject = [[MyObject alloc] init]; 為什么會有內存泄露?

關于nonatomic我不多解釋了, 它不是我要講的重點, 而且我也沒完全搞清楚, 不誤導大家. 我只說assign, retain ,copy.

get方法是:

  1. -(MyObject*)myObject{  
  2.     return _myObject;  

Set方法是:

  1. // assign   
  2. -(void)setMyObject:(id)newValue{  
  3.     _myObject = newValue;   
  4. }  
  5. // retain   
  6. -(void)setMyObject:(id)newValue{  
  7.     if (_myObject != newValue) {   
  8.         [_myObject release];   
  9.         _myObject = [newValue retain];   
  10.     }    
  11. }  
  12. // copy   
  13. -(void)setMyObject:(id)newValue{  
  14.     if (_myObject != newValue) {   
  15.         [_myObject release];   
  16.         _myObject = [newValue copy];   
  17.     }   

其實這些方法里還有別的內容, 并不只是這些. 而且這些方法可以被重寫. 比如你寫一個

  1. -(MyObject*)myObject{  
  2.     return _myObject;  

放在你的類里, 你調用self.myObject時(不要把它放在等號左邊, 那會調用get方法)就會調用這個方法.

這里多說一句, @property 是為你設置存取方法, 和你的屬性無關, 你可以只寫一句

  1. @property (readonly) NSString *name; 

在你的類里實現

  1. -(NSString*)name{  
  2.     NSLog(@"name");  
  3.     return @"MyClass";  

同樣可以用self.name調用.

現在回頭 說說我們開始的那四個賦值, 當不用self.的時候,  那句話只是一般的賦值, 把一個指針賦給另一個指針, 不會對分配的內存有任何影響, 所以2中不要最后[aMyObject release];這句話和4是一回事. 這里就不多說了.我們看看1和3,

當調用 setMyObject:方法時, 對newValue 做了一次retain操作, 我們必須把原來的newValue釋放掉, 不然就會內存泄露, 在1里, 我們有個aMyObject可以用來釋放, 在3里, 我們無法釋放它, 所以, 在3里, 我們會多出來一個retainCount. 內存泄露了.

說了這么多, 我只想讓大家清楚, 什么是調用屬性本身, 什么是調用存取方法. 怎么樣才能避免內存泄露, 而且, 以上例子里是在自己類里的調用, 如果這個類被別的類調用時, 更要注意一些,

順便說一下, 如果你想在其它類訪問對象屬性, 而不是通過存取方法, 你可以用myClass -> myObject來訪問, 這樣是直接訪問對象本身, 不過你先要把myObject設成@public. 但這個是官方不提倡的,

代碼比較簡單, 我還是發出來, 高人們可以忽略了 附件:  SelfExample.zip (18 K)http://www.cocoachina.com/bbs/job.php?action=download&aid=6639

小結:Objective-C 中關于self.用法的一些總結的內容介紹完了,希望本文對你有所幫助!

帖子地址 http://www.cocoachina.com/bbs/read.php?tid-12850-fpage-11-page-1.html,歡迎參與討論。

責任編輯:zhaolei 來源: Cocoa China
相關推薦

2012-01-18 10:13:50

Objective-CiOSself

2011-07-08 18:44:09

Objective-C Self Super

2011-08-04 15:14:39

Objective-C 數據類型

2011-08-15 17:29:36

Objective-C構造函數

2011-08-15 14:02:36

Objective-C

2011-08-17 15:37:23

Objective-C垃圾收集

2011-08-15 17:47:13

Objective-CisMemberOfC

2011-07-25 13:05:37

Objective-C 委托

2011-08-10 18:07:29

Objective-C反射

2013-08-21 15:06:31

iOSself.

2011-05-11 15:58:34

Objective-C

2013-06-20 10:40:32

Objective-C實現截圖

2013-03-27 12:54:00

iOS開發Objective-C

2011-05-11 11:20:26

Objective-C

2011-08-04 16:46:03

Objective-C 聲明

2011-07-27 16:18:42

Objective-c 協議

2011-08-15 17:06:01

Objective-CNSLog

2011-05-11 13:54:08

Objective-C

2011-05-11 14:06:49

Objective-C

2011-08-04 11:15:46

Objective-C 構造函數 構造方法
點贊
收藏

51CTO技術棧公眾號

国产亚洲精品aa午夜观看| 国产精品成人一区二区不卡| 色婷婷亚洲mv天堂mv在影片| 色婷婷av一区| 日韩成人av网站| 97精品人妻一区二区三区香蕉 | 精品国产91亚洲一区二区三区www| 亚洲欧美在线视频免费| 欧美日韩伦理| 精品少妇一区二区三区在线播放 | 亚洲国产日韩欧美综合久久| 日韩视频免费在线播放| 污片在线免费观看| 99re视频精品| 成人在线视频网| 中国一级免费毛片| 午夜精品视频一区二区三区在线看| 亚洲爱爱爱爱爱| 中文字幕成人免费视频| wwww亚洲| 亚洲美女免费在线| 免费观看成人在线| 亚洲AV无码精品国产| 日韩二区三区四区| 久久久免费观看视频| 黄色一级片一级片| 婷婷亚洲成人| 欧美mv日韩mv亚洲| 污污的视频免费观看| 老司机2019福利精品视频导航| 日韩美女视频一区| 日韩电影免费观看高清完整| 午夜成人鲁丝片午夜精品| 国产精品一区一区| 日韩av电影免费观看高清| 国产亚洲成人av| 久久精品久久久| 在线日韩av观看| 超碰97人人干| 欧美黑白配在线| 精品国产伦理网| 成人免费播放视频| 亚洲男男av| 欧美日韩国产三级| 丁香婷婷激情网| 97久久香蕉国产线看观看| 调教+趴+乳夹+国产+精品| 一本大道东京热无码aⅴ| 日本视频不卡| 91浏览器在线视频| 麻豆亚洲一区| 你懂的视频在线播放| 97久久超碰精品国产| 国产精品一区视频网站| 亚洲精品成av人片天堂无码| 国产成人丝袜美腿| 99久热re在线精品996热视频 | 精品88久久久久88久久久 | 91色综合久久久久婷婷| 国产精品国产三级国产专区53 | 亚洲精品天天看| 懂色av粉嫩av蜜乳av| 欧美1区2区3区4区| 亚洲成人精品视频| 熟妇高潮精品一区二区三区| 日韩激情精品| 精品欧美一区二区三区精品久久 | 97久久亚洲| 精品国产乱码久久久久久夜甘婷婷 | 农村寡妇一区二区三区| 蜜桃视频在线观看视频| 国产欧美一区二区精品仙草咪| 欧美尤物一区| 日本欧美在线视频免费观看| 亚洲欧美日韩成人高清在线一区| 日本黄网站色大片免费观看| 福利网站在线观看| 午夜精品在线看| 99热成人精品热久久66| 国产香蕉久久| 日韩一区二区精品| 91精品啪在线观看国产| 精品在线观看入口| 最新国产成人av网站网址麻豆| 日韩av毛片在线观看| 欧美激情综合| 精品国产精品网麻豆系列| 国内自拍偷拍视频| 日韩有码av| 国产午夜精品全部视频播放| 自拍偷拍第9页| 欧美三级视频| 日本精品免费一区二区三区| 一级黄色大片免费| 国产ts人妖一区二区| 精品国产免费人成电影在线观...| 飘雪影院手机免费高清版在线观看| 欧美激情一区二区三区全黄 | 最新97超碰在线| 亚洲精品免费播放| 免费成人午夜视频| 成人在线视频播放| 欧美一区日韩一区| 日韩片在线观看| 久久久久久久久久久妇女| 孩xxxx性bbbb欧美| 中文字幕av网站| 国产成人免费网站| 日韩妆和欧美的一区二区| 岛国成人毛片| 色噜噜狠狠色综合中国| 波多野结衣电影免费观看| 一本久久青青| 欧美第一黄网免费网站| 中文字幕人妻一区二区在线视频| 国产成人三级在线观看| 色播亚洲视频在线观看| 国产激情在线播放| 制服丝袜亚洲色图| 精品国产成人亚洲午夜福利| 欧美视频官网| 成人精品一区二区三区电影黑人| 亚洲av激情无码专区在线播放| 亚洲欧美中日韩| 黄色三级视频片| 久久视频在线观看| 色综合视频一区中文字幕| 国产精品传媒在线观看| 99久久久久久| 久久亚洲国产成人精品无码区| 成人在线视频观看| 国产视频欧美视频| 国产一级黄色av| 国内精品国产成人| 亚洲欧美丝袜| 第四色男人最爱上成人网| 日韩精品极品视频| 黄色小说在线观看视频| 国产精品99久久久久久宅男| 欧美亚洲视频一区| 国产毛片精品久久| 中文字幕亚洲一区| 免费又黄又爽又猛大片午夜| 99re热这里只有精品视频| 男人添女人荫蒂免费视频| 精品一区二区三区亚洲| 精品国产欧美一区二区三区成人 | 久久黄色网页| 久久99精品久久久久久秒播放器| 青草青在线视频| 欧美一级国产精品| 波多野结衣爱爱视频| 狠狠久久亚洲欧美| 在线成人性视频| 欧美综合影院| 久久精品99国产精品酒店日本| 自拍偷拍第八页| 亚洲国产精品99久久久久久久久| 一本大道熟女人妻中文字幕在线| 欧美理论电影在线精品| 97在线视频免费看| 图片区 小说区 区 亚洲五月| 亚洲国产一区二区三区| 污污免费在线观看| 亚洲国产一区二区精品专区| 国产另类自拍| 一区一区三区| 国产一区二区三区在线观看视频| 在线视频精品免费| 国产精品麻豆网站| 免费网站在线观看黄| 欧美.www| 精品国产一区二区三区日日嗨| 三级中文字幕在线观看| 亚洲日本中文字幕| 一区二区三区www污污污网站| 国产精品高清亚洲| 熟妇无码乱子成人精品| 亚洲第一黄色| 奇米精品在线| 亚洲ww精品| 欧美丰满少妇xxxx| 四虎影视在线观看2413| 欧美午夜影院在线视频| ass极品国模人体欣赏| 精品无码三级在线观看视频| 99亚洲国产精品| 欧美美女啪啪| 成人国产精品一区| 国产丝袜在线播放| 亚洲日韩中文字幕| a毛片在线免费观看| 亚洲成国产人片在线观看| 国产又粗又猛又爽又黄av| 极品销魂美女一区二区三区| 妞干网视频在线观看| 国产成人ay| 91成人免费看| 欧美成人精品一区二区男人小说| 久久久999精品视频| 熟妇高潮一区二区三区| 欧美日韩国产免费一区二区 | 欧美日韩天堂| 欧美精品一区二区三区在线四季 | 久久影视中文粉嫩av| 国产精品4hu.www| 97精品一区二区三区| 99精品老司机免费视频| 亚洲成人性视频| 亚洲视频在线观看免费视频| 亚洲成精国产精品女| 欧美色视频一区二区三区在线观看| www.在线欧美| 日本精品一区在线| 久久精品盗摄| 精品无码国产一区二区三区av| 日本不卡免费一区| 精品国产一二| 久久久国产精品入口麻豆| 国产盗摄xxxx视频xxx69| 男女视频在线| 久久精品久久久久久国产 免费| 四虎影视在线观看2413| 日韩欧美国产综合在线一区二区三区| 男人天堂视频网| 精品日韩中文字幕| 久久久久亚洲av片无码下载蜜桃| 国产女人18水真多18精品一级做| 少妇一级淫片免费放播放| 国产综合久久久久影院| 婷婷六月天在线| 国产一级一区二区| 久久亚洲精品无码va白人极品| 99国产精品免费视频观看| 欧洲一区二区在线| 天天躁日日躁成人字幕aⅴ| 91精品久久香蕉国产线看观看| **国产精品| 国产日韩在线播放| 亚洲mmav| 国产成人精品日本亚洲| 神马午夜在线视频| 欧美黄网免费在线观看| 高h视频在线观看| 久久精品视频网站| 免费人成在线观看播放视频 | 国产视频在线观看一区| 日韩精品视频在线看| 92看片淫黄大片看国产片| 97久久精品一区二区三区的观看方式 | 国产黄在线免费观看| 国产精品美女久久久久久久久久久 | 91免费黄视频| 亚洲国产一区二区精品专区| 国产妇女馒头高清泬20p多| 亚洲性图久久| 免费看国产一级片| 亚洲精一区二区三区| 欧美牲交a欧美牲交| 亚洲一区二区网站| 不卡影院一区二区| 日本不卡一区二区| 亚洲色图 在线视频| 紧缚奴在线一区二区三区| 亚洲精品乱码久久久久久动漫| 国产剧情一区二区三区| 麻豆tv在线观看| 白白色亚洲国产精品| 波多野结衣办公室33分钟| 久久久99精品免费观看| 极品人妻videosss人妻| 国产精品蜜臀在线观看| 成人免费视频国产免费观看| 亚洲一区在线观看网站| 国产成人免费观看视频| 色偷偷久久人人79超碰人人澡| 夜夜躁日日躁狠狠久久av| 欧美日韩夫妻久久| 精品国产无码一区二区| 日韩av在线网| aaa在线免费观看| 另类图片亚洲另类| 91资源在线观看| 国产成人avxxxxx在线看| 成人影院网站ww555久久精品| 91久久国产自产拍夜夜嗨| 精品在线网站观看| 日韩精品久久久| 亚洲va在线| 日韩在线一级片| 久久av中文字幕片| 免费的av网站| 国产精品欧美一区二区三区| 久久久久97国产| 在线亚洲精品福利网址导航| 国产口爆吞精一区二区| 精品夜色国产国偷在线| 日本在线免费| 5278欧美一区二区三区| 久久精品国产福利| 狠狠爱一区二区三区| 欧美国产一级| 久久精品香蕉视频| 国产精品一品视频| 波多野结衣 在线| 亚洲日穴在线视频| 久久久久女人精品毛片九一| 777亚洲妇女| 五月天婷婷在线观看| 久久久www成人免费精品| 牛牛精品一区二区| 亚洲一区二区三区xxx视频| 伊人久久大香线蕉av不卡| a级片一区二区| 秋霞av亚洲一区二区三| xfplay5566色资源网站| 中文字幕一区av| 台湾佬中文在线| 亚洲精品一区二区三区蜜桃下载| 香蕉视频在线播放| 97色在线观看| 1769国产精品视频| 在线视频91| 日本不卡一区二区| 久久精品视频18| 五月婷婷另类国产| 性做久久久久久久久久| xvideos亚洲| 91p九色成人| 欧美日韩在线一区二区三区| 亚洲青涩在线| 激情av中文字幕| 亚洲美女免费视频| 国产毛片毛片毛片毛片毛片| 亚洲性69xxxbbb| 男人皇宫亚洲男人2020| 狠狠色综合一区二区| 国产综合亚洲精品一区二| 在线免费黄色网| 中文字幕亚洲在| 中文在线资源天堂| 中文字幕欧美精品日韩中文字幕| 天堂av中文在线观看| 精品视频一区二区| 在线成人黄色| 午夜免费福利影院| 亚洲国产日韩一级| 凸凹人妻人人澡人人添| 韩日精品中文字幕| 国产精品视频3p| 日本午夜激情视频| 成人av电影在线网| 日韩久久久久久久久| 亚洲第一网站男人都懂| 国产污视频在线播放| 精品综合久久久| 亚洲一区自拍| 欧美特级黄色录像| 91久久精品日日躁夜夜躁欧美| 久久99久久| 国产精品第一第二| 中文字幕精品影院| 任你操这里只有精品| 久久久久久久久99精品| 懂色av蜜臀av粉嫩av分享吧最新章节| 日韩精品视频免费在线观看| 超免费在线视频| 九9re精品视频在线观看re6| 欧美一级专区| 国产激情av在线| 7777女厕盗摄久久久| 在线视频国产区| 久久99精品久久久久久青青日本 | 欧美三级理论片| 亚洲视频 欧洲视频| 亚洲欧美激情国产综合久久久| 国内精品在线一区| 国产在线日韩精品| 97超碰成人在线| 亚洲图片自拍偷拍| 人人九九精品| 91精品国产自产在线| 韩国精品一区二区三区| 国产精品无码永久免费不卡| 欧美亚洲国产一区二区三区| 国产美女福利在线| 国产视频精品网| 蜜臀av性久久久久蜜臀aⅴ四虎| 色婷婷在线视频观看| 亚洲国产欧美一区二区三区久久| 四虎4545www精品视频| 男人的天堂成人| 99久久久无码国产精品| 在线观看免费黄色小视频| 欧美激情在线有限公司| 国产成人黄色| 一级全黄裸体片| 一本大道av伊人久久综合| 成人video亚洲精品| 久久久7777|