成員變數,本例中的是例項成員變數,是作用於整個類物件內的。從生命週期來看,它比區域性變數要長一些,但它預設是私有的,其他物件是無法訪問到的。
比如你乙個變數放在
@inte***ce
中,你申請乙個實體時,變數存活週期跟你實體一樣。
因為成員變數的作用域是整個類物件內,所以在arc環境下oc裡面的成員變數應該是 strong屬性的。
例子:標頭檔案:
@inte***ce
viewcontroller : uiviewcontroller
//屬性變數
@property
(nonatomic
,strong
)nsarray
*array2
;@end
原始檔:
- (void)viewdidload
nslog(@"\narray1 : %@\n array2 : %@",array1,array2);
}
我的理解是:
區域性變數是根據其生存週期定義的,在原始檔中的array1,其生命週期是在以「」為界限的**塊中,雖然它的名稱與成員變數相同,但不是同乙個變數。成員變數是用於乙個區域內的臨時變數。
成員變數,本例中的是例項成員變數,是作用於整個類物件內的。從生命週期來看,它比區域性變數要長一些,但它預設是私有的,其他物件是無法訪問到的。因此,一般自定義方法,作為乙個介面讓其他物件訪問這個變數。因此,成員變數用於類內部,無需與外界接觸的變數。
根據成員變數的私有性,為了方便訪問,所以就有了屬性變數。屬性變數的好處就是允許讓其他物件訪問到該變數。當然,你可以設定唯讀或者可寫等,設定方法也可自定義。所以,屬性變數是用於與其他物件互動的變數。
目前我是這麼理解的,希望對你有幫助。
成員變數和屬性變數是完全一樣的,別被obj-c 2.0的靈活寫法給誤導了。
但是屬性變數可以作為方法名字,也就是可以有其他名字。
看到一篇文章:
ios中的成員變數定義在@inte***ce 和@implementation 中的區別是什麼?
@inte***ce 中是成員變數
@implementation 是全域性變數
作用域和存活區間的問題
比如你乙個變數放在
@inte***ce
中,你申請乙個實體時,變數存活週期跟你實體一樣
在@implementation 中,因為是全域性,所以一直存在
非常感謝!
作用域,就是這個變數在存活區域,
比如說成員變數,就是放在@inte***ce,作用域是類裡面
全域性變數,是整個程式
臨時變數一般是函式內
@implementation testclass
這樣的變數應該不是全域性的吧?
@implementation testclass
這個情況比較少個,不推薦,這個情況是成員變數
但是預設是@private
其實都是成員變數,放在
@implemetation裡的是私有的而已。
都是成員變數,只是放在
@implemetation中的變數無法被子類繼承
Java是值傳遞還是引用傳遞?
廢話不多說,上 很簡單,圖一中呼叫靜態方法intvalues int t 毫無疑問是傳遞值,因為如果是引用傳遞,那麼二者列印的值是一致的。很明顯,a 之後,t的值沒有發生改變。圖二也是一樣,清晰明了,把方法引數的值賦值給a,然後改變a的值,二者值列印均一致,那是因為t代表的是乙個堆記憶體的位址,基本...
Java是值傳遞還是引用傳遞
基本型別 如上圖所示,基本型別傳遞時,執行緒在棧上分配形式引數並拷貝實際引數的值。create with intellij idea author wangzhenpeng date 2018 4 8 time 上午9 48 e mail wangzhenpeng0924 163.com descr...
String是值傳遞還是引用傳遞
今天發現了乙個比較有意思的問題。把乙個string型別的引數傳入方法,並在方法內改變了引用的值。然後他在方法外使用這個值,發現這個string還是之前的值,並沒有改變。這裡要向大家介紹一下,大家都知道j a在傳參時分為值傳遞和引用傳遞。引數為基本型別時是值傳遞,引數為封裝型別時是引用傳遞。例如 pu...