誰能告訴我[self.property release]
和[property release]
之間的區別。我問這是因爲在我的應用程序的視圖控制器之一,我在做[self.property release]
和推這個視圖控制器在導航堆棧,當我彈出此視圖控制器它顯示錯誤EXC_BAD_INSTRUCTION
,但當我做[property release]
一切工作正常...?任何人都可以告訴我我哪裏出錯了。我是iPhone應用開發新手。[self.property release]和[property release]之間的區別
0
A
回答
3
[屬性版本]將釋放消息發送到屬性實例變量,幾乎可以肯定你想要做什麼。
[self.property release]將釋放消息發送給self.property返回的對象。這樣做的結果將取決於該屬性是否被定義爲assign/copy/retain,因此基本上,您可能會向您認爲的那個對象發佈不同的對象。
4
區別是self.myProperty
是實例變量myProperty
的訪問方法。通過@synthesize
產生存取方法,或可作爲
-(Type*) myProperty;
-(void) setMyProperty:(Type*)p;
所以明確定義,假設你已經定義了訪問爲(關鍵是留住)
@property (retain) Type* myProperty;
然後
[myProperty release];
myProperty = nil;
相當於
self.myProperty = nil;
一般來說,將釋放對象設置爲零是好習慣,這樣您就不會意外嘗試使用(或釋放)它們。
沒有很好的理由來呼籲[self.property release]
。
相關問題
- 1. [self.view release]和[view release]之間的區別?
- 2. [foo release]和self.foo = nil之間的區別;
- 3. Bin/Debug和Bin/Release之間的區別
- 4. self.property to nil vs [ivar release] case close
- 5. InterlockedCompareExchange Release()和Acquire()有什麼區別?
- 6. 設置object = nil和[object release] vs [object release]和object = nil有什麼區別?
- 7. 任何#define或類似於開發版本和adhoc/release之間的區別?
- 8. 在類擴展中@property(nonatomic,只讀)和@property之間的區別?
- 9. SPListItem [「property」]和SPListItem.Properties [「property」]之間的區別是什麼?
- 10. 春季啓動1.4.0.RELEASE和Spring 4.3.2.RELEASE
- 11. Qt 5:Debug \ release和Release \ debug目錄
- 12. IDXGIObject :: GetParent和Release
- 13. NSAssert和release
- 14. 1.3.7.RELEASE - > 1.4.1.RELEASE | java.lang.NoSuchMethodError:org.springframework.boot.builder.SpringApplicationBuilder.showBanner
- 15. gradle release插件release-opinion
- 16. sbt-release插件的「release」命令無法識別
- 17. Flash中的onMouseUp/Down和onPress/Release事件有什麼區別?
- 18. @ property(nonatomic)double longitude&@ property(nonatomic,retain)之間的區別NSNumber * longitude;
- 19. Hudson和maven-release-plugin
- 20. spring 3.0.5-RELEASE和javaconfig
- 21. 在Release
- 22. Release Quickie
- 23. Xcode 3.2中的@property(nonatomic,retain)和Xcode 4.2中的@property(strong,nonatomic)之間的區別
- 24. ResponseWriter.writeAttribute()中的'name'和'property'參數之間的區別
- 25. 智能指針(〜auto_ptr()和release()之間的差異)
- 26. Release Release開放測試結果
- 27. 在RDFa中,property =「」&rel =「」和resource =「」&about =「」之間的區別?
- 28. 接口聲明中@property和變量之間的區別
- 29. iPOJO:@ServiceProperty和@Property的區別
- 30. IntelliJ + Gradle + Android。在Debug和Release buildtypes之間切換
感謝羅傑......爲您的答覆.. – user347161 2010-07-02 10:24:07
我會挑戰這個答案:getter訪問器不返回對象的副本,但setter是誰創建副本。所以將發佈版本發送給getter訪問器意味着將版本發送給ivar是同樣的事情。我會稱這個答案不正確... – Moszi 2011-01-11 23:12:03