在IOS開發(fā)中的成員變量與屬性

1、成員變量和屬性區(qū)別

1)@interface中大括號(hào)里聲明的是“成員變量”;

2)@property聲明的是“屬性”,
@synthesize與@property配對(duì),意義是“合成”。

成員變量與屬性的區(qū)別主要分為以下兩點(diǎn):

1、在@interface中定義變量的話,為當(dāng)前類的私有(private),顧名思義,這些變量只能在當(dāng)前類中被訪問;而用@property聲明的變量為公有(.h里public .m里private),可以在當(dāng)前類或者其他類中被訪問。

2、使用@interface聲明的變量,使用變量名進(jìn)行訪問;@property聲明的變量用“_變量名”,或者“self.變量名”的形式進(jìn)行訪問。

2、推薦聲明方式

1)在ios第一版中:我們?yōu)檩敵隹谕瑫r(shí)聲明了屬性和底層實(shí)例變量,那時(shí),屬性是oc語言的一個(gè)新的機(jī)制,并且要求你必須聲明與之對(duì)應(yīng)的實(shí)例變量,例如:注意:(這個(gè)是以前的用法)

@interface MyViewController :UIViewController
{
    UIButton *myButton;
}
@property (nonatomic, retain) UIButton *myButton;
@end
2)在現(xiàn)在iOS版本中:蘋果將默認(rèn)編譯器從GCC轉(zhuǎn)換為LLVM(low level virtual machine),從此不再需要為屬性聲明實(shí)例變量了。如果LLVM發(fā)現(xiàn)一個(gè)沒有匹配實(shí)例變量的屬性,它將自動(dòng)創(chuàng)建一個(gè)以下劃線開頭的實(shí)例變量。因此,在這個(gè)版本中,我們不再為輸出口聲明實(shí)例變量。
ios5更新之后,蘋果是建議以以下的方式來使用:
@interface MyViewController :UIViewController
@property (nonatomic, retain) UIButton *myButton;
@end

其實(shí)在日常開發(fā)過程中能避免使用成員變量與屬性的盡量不用,可以用以下方法實(shí)現(xiàn)(以UITableView上多個(gè)textField為例):
1)創(chuàng)建可變字典,利用UITextFieldDelegate代理存儲(chǔ)多個(gè)textField.text,要注意的是只有取消textField的第一響應(yīng)者才執(zhí)行代理(- (void)textFieldDidEndEditing:(UITextField *)textField{});
2)創(chuàng)建可變數(shù)組,存儲(chǔ)textField對(duì)象,此方法取消所有textField的第一響應(yīng)者比較實(shí)用;
3)為textField設(shè)有規(guī)律的tag值(比如textField.tag = indexPath.row+100),再利用for循環(huán)取消第一響應(yīng)者。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容