Objective-C----記憶體管理--點語法
1、點語法及其好處
1、方便程式設計師能夠很快的轉到O-C上來
2、讓程式設計簡單化
3、隱藏了記憶體管理細節
4、隱藏了多執行緒、同步、加鎖細 節
5、點語法的使用
Dog *dog=[[Dog aloc] init];
[dog setAge:100];
int dogAge=[dog age];
NSLog(@"Dog Age is %d",dogAge);
下面的程式碼用點語法
dog.age=200;//呼叫setAge方法
dogAge=dog.age;//呼叫age方法
這裡的點不上呼叫的dog這個物件的欄位,而且在呼叫方法。dog.age是在呼叫setAge這個方法,下面的dog.age 是在呼叫age這個方法。
點語法是編譯器級別
編譯器會把dog.age=200;展開成[dog setAge:200];
會把dogAge=dog.age;展開成[dog age];函式呼叫
6、點語法setter和getter規範
setter函式展開規範
dog.age=200;
[dog setAge:200];
getter函式展開規範
int dogAge=dog.age;
int dogAge=[dog age];
專案當中如果想用點語法,必須在專案中的.h檔案和.m檔案中宣告和實現setAge和age方法,也就是說要宣告和實現getter和setter方法。
2、@property @synthesize如何使用
@property是讓編譯器自動產生函式申明
不再寫下面2行程式碼
-(void) setAge:(int)newAge;
-(void) age;
只需要下列一行就可以代替
@property int age;
@synthesize 意思是合成
@synthesize就是編譯器自動實現getter和setter函式
不用寫下列程式碼
- (void) setAge:(int)newAge
{
age=newAge;
}
-(int) age
{
return age;
}
只需要些
@synthesize age;
3、@property @synthesize編譯器如何展開
@property @synthesize只能展開成標準的模板,如果想在getter和setter函式中增加內容,則不能用@synthesize表示方法。
4、如何使用點語法
self.age放在=號的左邊和右邊是不一樣的,放在左邊是表示呼叫setter函式,放在右邊表示呼叫getter函式。
為了區別開age,我們會對dog類做一些改動
@interface Dog:NSObject
{
int _age;//改動了以前是int age;
}
@property int age;
@end;
#import "Dog.h"
@implementation Dog
@synthesize age=_age;
@end
5、@property其他屬性
readwrite(預設),readonly
表示屬性是可讀寫的,也就是說可以使用getter和setter,而readonly只能使用getter
assign(預設),retain,copy
表示屬性如何儲存
nonatomic
表示不用考慮執行緒安全問題
getter=......,setter=......
重新設定getter函式和setter函式名
這個專案的程式碼如下;
dog.h檔案程式碼
dog.m檔案程式碼
main.m檔案程式碼
下圖為今年部分iOS開發的視訊教程,因為不定時更新中故不做多的截圖,如果有iOS開發上的問題不懂或者需要視訊教程可以看我的個人簡介。
不定時更新中。
相關文章
- C語言-記憶體管理之一[記憶體分配]C語言記憶體
- C語言-記憶體管理之二[記憶體指令]C語言記憶體
- 記憶體管理 記憶體管理概述記憶體
- Rust語言記憶體管理之妙Rust記憶體
- iOSARC記憶體管理要點iOS記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- C語言之動態記憶體管理C語言記憶體
- Go 語言的手工記憶體管理Go記憶體
- 【記憶體管理】記憶體佈局記憶體
- 記憶體管理記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Aerospike的bin記憶體管理--即列記憶體管理ROS記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- Linux 記憶體管理:記憶體對映Linux記憶體
- 記憶體管理-swMemoryGlobal記憶體
- OC記憶體管理記憶體
- iOS 記憶體管理iOS記憶體
- JavaScript 記憶體管理JavaScript記憶體
- MySQL記憶體管理MySql記憶體
- Oracle 記憶體管理Oracle記憶體
- JavaScript記憶體管理JavaScript記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- 2 Day DBA-管理Oracle例項-管理記憶體-關於記憶體管理Oracle記憶體
- .NET基礎拾遺(1):型別語法基礎和記憶體管理基礎型別記憶體
- iOS開發ARC記憶體管理技術要點iOS記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- CF的記憶體管理。記憶體
- “理解”iOS記憶體管理iOS記憶體
- iOS 記憶體管理MRCiOS記憶體
- iOS 記憶體管理研究iOS記憶體
- 01記憶體管理-概述記憶體
- HotSpot JVM 記憶體管理HotSpotJVM記憶體
- Flink記憶體管理記憶體