本人最糾結的就是屬性的一些細節,看注釋
//
// main.m
//#import #import "student.h"
int main(int argc, const char * argv)
// - (nsstring *)name
//
//在這裡簡單說一下_object和object的區別。_object是myclass類的成員變數,object是屬性。property和synthesize定義了一對getter和setter方法,在這裡的getter方法是object,setter方法是setobject,事實上getter和setter方法操作的是變數_object。
#pragma mark----屬性的屬性
//第一類,讀寫性控制(readonly/readwrite/setter/getter/) 預設readwrite
// readonly,告訴編譯器,只宣告getter⽅方法(⽆無setter⽅方法)。
// 例如:@property(readonly)nsstring *name;
//
// //等價於 - (nsstring *)name;
// readwrite,告訴編譯器,既宣告setter⼜又宣告getter。
// 例如: @property(readwrite)nsstring *name;
//
// //等價於 - (nsstring *)name;
//
// - (void)setname:(nsstring *)name;
// readwrite是讀寫性控制的預設設定
//第二類:原子性控制(nonatomic、atomic) 預設atomic
// atomic。setter、getter⽅方法在多執行緒訪問下是絕對安全的,即 setter、getter內部做了多執行緒訪問處理。
// 原⼦子性控制的預設設定是 atomic
// nonatomic。setter、getter⽅方法內部不會做多執行緒訪問處理,僅僅是 普通的setter、getter⽅方法
// 程式開發過程中,setter、getter處處都在⽤用,如果使⽤用atomic,需要不斷 的對setter、getter加鎖解鎖以保證執行緒訪問安全,會很佔⽤用系統資源,降低系統效能。 通常設定為nonatomic,某些屬性需要執行緒安全的時候,才定義為atomic。
//第三類:語義設定(assign、retain、copy)
// assign。setter、getter內部實現是直接賦值。
// //assign:就是簡單的setter getter 方法
// retain
// 如果屬性是非物件型別(比如int,float等)屬性的語義設定使⽤用assign。
// 如果屬性是物件型別(⽐如nsstrng、nsarray等)屬性的語義設定使⽤retain。
// 如果屬性是物件型別並且想得到引數的copy,用copy關鍵字。
//// retain:釋放舊的物件,將舊物件的值賦予輸入物件,再提高輸入物件的索引計數為1 ,retain,是說明該屬性在賦值的時候,先release
// 之前的值,然後再賦新值給屬性,引用再加1。retain是建立乙個指標,引用物件計數加1
//內部實現 :@property(nonatomic,retain)nsstring *name;
// - (void)setname:(nsstring *)name
//
// }
// }
// - (nsstring *)name
//
// }
// }
// - (nsstring *)name
return 0;
}
OC學習筆記 OC中的類
1.objc跟c的區別與聯絡 首先 objc是乙個物件導向的語言 封裝 繼承 多型 objc相當於c的乙個超集 即objc允許使用任何c語言 但增加了許多c沒有的特點 bigger easier 2.objc中的類與物件 類由介面 xx.h inte ce 和實現 xx.m implementati...
OC學習 OC中對檔案的操作
下面是一些簡單的關於oc中對檔案的基本操作的案例 應用程式檔案的移動 nsfilemanager new moveitematpath nsstring 路徑格式 user nsstring型別 topath nsstring error nserror autoreleasing 應用程式檔案的複...
OC學習筆記(4)屬性宣告
1 asproperty.h import inte ce asproperty nsobject 屬性宣告 property attributes 資料型別 例項變數 訪問器方法實現 synthesize 例項變數1,例項變數2,例項變數n property nonatomic,assign ns...