ios應用程式儲存資訊的方式很多,但主要有如下3種:
1. 單例類nsuserdefaults:資料通過鍵/值對的方式儲存在nsuserdefaults單例中。
2. 設定束(settings bundle):提供了乙個通過ios應用程式settings對應用程式進行配置的介面,資料儲存在ios系統的設定選單。
3. 直接訪問檔案系統:使用檔案管理類nsfilemanager來實現。
這次主要介紹下設定束的情況:
如下圖:
新增成功後的效果為如下圖:
編譯工程,應該能正常執行起來了。
好下面解釋下settings.bundle:
在settings.bundle 中en.iproj為多語言的,暫時不管。我們主要關心的是root.plist檔案。 這個檔案決定了我們儲存的資料在設定選單裡面顯示的方式,它有7個型別:
group
-- 編組。鍵為psgroupspecifier,首選項邏輯編組的標題。
text field
-- 文字框。鍵為pstextfieldspecifier,可編輯的文字字串。
title
-- 標題。鍵為pstitlevaluespecifier,唯讀文字字串。
toggle switch
-- 開關。鍵為pstoggleswitchspecifier,開關按鈕。
slide
-- 滑塊。鍵為pssliderspecifier,取值位於特定範圍內的滑塊。
multivalue
-- 多值。鍵為psmultivaluespecifier,下拉式列表。
child pane
-- 子窗格。鍵為pschildpanespecifier,子首選項頁。
一些型別的特定屬性說明:
text field
text field is secure -- 是否為安全文字。如果設定為yes,則內容以圓點符號出現。
autocapitalization style -- 自動大寫。有四個值: none(無)、sentences(句子首字母大寫)、words(單詞首字母大寫)、all characters(所有字母大寫)。
autocorrection style -- 自動糾正拼寫,如果開啟,你輸入乙個不存在的單詞,系統會劃紅線提示。有三個值:default(預設)、no autocorrection(不自動糾正)、autocorrection(自動糾正)。
keyboard type -- 鍵盤樣式。有五個值:alphabet(字母表,預設)、numbers and punctuation(數字和標點符號)、number pad(數字面板)、url(比alphabet多出了.com等網域名稱字尾)、email address(比alphabet多出了@符合)。
toggle switch
value for on -- 當開關置為on時,取得的字串值。
value for off -- 當開關置為off時,取得的字串值。
slider
minimum value -- 最小值,number型別。
maximum value -- 最大值,number型別。
min value image filename -- 最小值那一端的。
max value image filename -- 最大值那一端的。
p.s.大小必須為21*21,並且要放在settings.bundle包內(在finder裡顯示包內容,然後貼上)。
multivalue
values -- 值的集合。
titles -- 標題的集合,與值一一對應。
child pane
filename -- 子plist的檔名。
這裡的item0非常重要,
item0的型別是group,對應的是乙個分組**型別,然後下面的item都在這個分組**中,直到遇到下乙個group。(即圖二中為乙個組,需要新增下一組就要在加入group型別)
在我們這個例項中:(設定乙個組,第一項為輸入名稱的編輯框,第二項為yes/no的開關變數,第三項為slider的滑動)
item0:關鍵設定type:group,顯示標題為:group。
item1:關鍵設定type:text field ,title:name, identifier:name_preference, 設定identifier就是通過objectforkey來查詢資料。
同理與item2,item3主要設定(type,title,identifier),如下圖效果:
執行後在設定選單中會出現testsystemset的項。進入如下圖效果
使用:寫入預設值:
- (void)registerdefaultsfromsettingsbundle
@"root.plist"
]];
nsarray *preferences = [settings objectforkey:@"preferencespecifiers"];
nsmutabledictionary*defaultstoregister = [[nsmutabledictionaryalloc] initwithcapacity:[preferences count]];
for(nsdictionary *prefspecification in preferences)
}[[nsuserdefaults standarduserdefaults] registerdefaults:defaultstoregister]; }
// 獲取資料
-(void)gettestvalue
[self
registerdefaultsfromsettingsbundle];
[self gettestvalue];
// add the view controller's view to the window and display.
[window
addsubview
:viewcontroller.
view];
[window
makekeyandvisible];
returnyes; }
參考:
執行緒束分化
在英偉達gpu中,執行緒束是最小的執行單位,執行緒束的大小代表了乙個sm同時併發的執行緒數目。一般在sm實際排程中,sm獲取到當前指令後,會將該指令廣播到sm內所有的硬體core中即sm中,這樣做可以減少從記憶體中讀取指令的次數,提高效率。而在cpu中,每個核是單獨執行乙個任務,在執行前每個核各自從...
線束測試儀 汽車線束檢測應用
線束測試儀是汽車線束檢測行業的新寵。1 線束測試儀全程電腦操作和運轉,節省了大量的人力。我們只需要將需要進行檢測的線束接通到汽車線束檢測儀上,就可以一鍵自動完成檢測,並且在顯示器上顯示出存在問題的線束,直接將問題排查出來。2 汽車線束測試儀速度非常快。傳統意義上的檢測一般是借助萬用表等儀器逐個地將線...
CUDA 執行緒束分化
1.執行緒束分化 執行緒束是sm中基本的執行單元。當乙個執行緒塊的網格被啟動後,網格中的執行緒塊分布在sm中。一旦執行緒塊被排程到乙個sm上,執行緒塊中的執行緒會被進一步劃分為執行緒束。乙個執行緒束由32個連續的執行緒組成,在乙個執行緒束中,所有的執行緒按照單指令多執行緒 simt 方式執行 也就是...