我正在關注 Apple 的 Objective C MetalKit 指南,這行代碼出現在這里:
MTLRenderPassDescriptor *renderPassDescriptor = view.currentRenderPassDescriptor;
view.currentRenderPassDescriptor;使用和有區別[view currentRenderPassDescriptor];嗎?我總是看到第二個選項,也沒有給我錯誤或不同的結果,但奇怪的是,他們將兩個語法選項都用于相同的目的。
uj5u.com熱心網友回復:
點語法是語法糖,只是他們隨后添加到語言中的一種更新、更簡潔的語法。點語法和方括號在功能上是等效的。
請參閱Dot Syntax Is a Concise Alternative to Accessor Method Calls from Programming with Objective-C:
除了進行顯式的訪問器方法呼叫外,Objective-C 還提供了另一種點語法來訪問物件的屬性。
點語法允許您訪問如下屬性:
NSString *firstName = somePerson.firstName; somePerson.firstName = @"Johnny";點語法純粹是訪問器方法呼叫的方便包裝。當您使用點語法時,仍然可以使用上面提到的 getter 和 setter 方法訪問或更改屬性:
- 使用獲取值
somePerson.firstName與使用相同[somePerson firstName]- 使用設定值
somePerson.firstName = @"Johnny"與使用相同[somePerson setFirstName:@"Johnny"]這意味著通過點語法的屬性訪問也由屬性屬性控制。如果一個屬性被標記為只讀,如果你嘗試使用點語法設定它,你會得到一個編譯器錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/512992.html
標籤:目标-c句法
