1. 程式人生 > >IOS開發之NSSet應用

IOS開發之NSSet應用

而NSArray,NSDictionary類宣告程式設計介面物件的有序集合(有序儲存:在記憶體中的儲存位置連續)。

NSSet,NSMutableSet; 與NSArray,NSMutableArray的區別一樣,NSSet宣告靜態物件。當建立NSSet物件時初始化,後期氣候的條目不能修改。而NSMutableSet物件則是可以動態新增和刪除的,同時根據物件長度自動分配記憶體。

需要注意的是:NSSet,NSArray裡面只能新增cocoa物件,如果需要加入基本資料型別(int,float,BOOL,double等),需要將資料封裝成NSNumber型別。

NSSet在實際應用中與NSArray區別不大,但是如果你希望查詢NSArray中的某一個元素,則需要遍歷整個陣列,效率低下。而NSSet在查詢某一特定的元素的時候則是根據hash演算法直接找到此元素的位置,效率高。

NSSet

- (NSArray *)allObjects;

- (id)anyObject;

- (BOOL)containsObject:(id)anObject;

- (NSString *)description;

- (NSString *)descriptionWithLocale:(id)locale;

- (BOOL)intersectsSet:(NSSet *)otherSet;

- (BOOL)isEqualToSet:(NSSet *)otherSet;

- (BOOL)isSubsetOfSet:(NSSet *)otherSet;

+ (id)set;

+ (id

)setWithObject:(id)object;

+ (id)setWithObjects:(const id *)objects count:(NSUInteger)cnt;

+ (id)setWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;

+ (id)setWithSet:(NSSet *)set;

+ (id)setWithArray:(NSArray *)array;

- (id)initWithObjects:(const id *)objects count:(NSUInteger)cnt;

- (id)initWithObjects:(id

)firstObj, ... NS_REQUIRES_NIL_TERMINATION;

- (id)initWithSet:(NSSet *)set;

- (id)initWithSet:(NSSet *)set copyItems:(BOOL)flag;

- (id)initWithArray:(NSArray *)array;


NSMutableSet (NSExtendedMutableSet)

- (void)addObjectsFromArray:(NSArray *)array;

- (void)intersectSet:(NSSet *)otherSet;

- (void)minusSet:(NSSet *)otherSet;

- (void)removeAllObjects;

- (void)unionSet:(NSSet *)otherSet;

- (void)setSet:(NSSet *)otherSet;

+ (id)setWithCapacity:(NSUInteger)numItems;

- (id)initWithCapacity:(NSUInteger)numItems;

NSSet的本質上是連結串列,從記憶體方面來講,連結串列是不規則分佈在記憶體中以指標相連的. 所以記憶體的地址是不相連的,要想查詢某一元素,就要從連結串列頭開始一次查詢.

NSArray 儲存在空間上是連續的。
因為空間區域性性(快取的存在),陣列迭代效率更高。

可以百度看看 陣列 和連結串列 效率! 


相關推薦

IOS開發NSSet應用

而NSArray,NSDictionary類宣告程式設計介面物件的有序集合(有序儲存:在記憶體中的儲存位置連續)。 NSSet,NSMutableSet; 與NSArray,NSMutableArray的區別一樣,NSSet宣告靜態物件。當建立NSSet物件時初始化,後期氣候的條目不能修改。而NSMuta

IOS開發UISearchBar應用

當你在seachBar中輸入字母之前的時候,只是用滑鼠選中searchBar的時候,如圖 終端輸出截圖如下:(這個時候呼叫先shouldBeginEditing,之後呼叫didBeginEditing,) 當你希望選中UISearchBar的時候,鍵盤自動呼叫載入到介

iOS開發蘋果應用6.1日起需相容IPv6,那麼作為開發者我們需要做些什麼呢?【科普IPV6】

我相信現在很多的iOS開發者都知道蘋果要求我們提交到App Store的應用必須支援IPv6。           1.提到IPV6相關。 那這個直接就聯想到就是關於我們App中網路部的一些內容,是否要進行相應的改變。            首先,解釋下什麼是ipv6?

iOS開發 應用間相互跳轉

gpo 用戶隱私 spa container 下載 containe canopen itunes cep 1. 應用間相互跳轉簡介 在iOS開發的過程中,我們經常會遇到需要從一個應用程序A跳轉到另一個應用程序B的場景。這就需要我們掌握iOS應用程序之間的相互跳轉知識。

iOS開發Weex嵌入已有應用(三)

前言 1.官方環境部署 2.純Weex開發簡單的App 前兩個文章介紹了一下我遇到看到的一些需要注意的東西,其實按照官方的或者其他博主寫的Weex文章,雖然不多,但是很多人都是用嵌入應用的方式做專案的,如果純Weex開發,可以點選上面的文章,自己寫著玩應該還不錯,下面介紹下自己如何整合到專

iOS開發應用內檢測手機鎖屏,解鎖狀態

iPhone的鎖屏監測分為兩種方式監聽: 1. 程式在前臺,這種比較簡單。直接使用Darwin層的通知就可以了: #import <notify.h> #define NotificationLock CFSTR("com.apple.springboa

iOS開發CoreSpotlight框架的應用

iOS開發之CoreSpotlight框架的應用    

iOS開發DeviceCheck框架的應用

iOS開發之DeviceCheck框架的應用       DeviceCheck框架是iOS 1

iOS開發EventKit框架的應用

iOS開發之EventKit框架的應用 一、關於系統日曆和提醒事宜       iOS系統自

ios開發 -- invalid nib registered for identifier

層級關系 註意 刪除 出現 ide 提示 sta tab 後來 今天在寫代碼的時候,碰到這麼一個問題: invalid nib registered for identifier (重用符) - nib must contain exactly one top level

iOS開發視頻根據url獲取第一幀圖片,獲取任一幀圖片

keyword rac onerror 根據 ati parameter all ger mage + (UIImage*) thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time { AV

iOS開發Runtime常用示例總結

開發一、構建Runtime測試用例本篇博客的內容是依托於實例的,所以我們在本篇博客中先構建我們的測試類,Runtime將會對該類進行相關的操作。下方就是本篇博客所涉及Demo的目錄,上面的RuntimeKit類是講Runtime常用的功能進行了簡單的封裝,而下方的TestClass以及相關的類目就是我們Run

ios開發Swift新手入門

間距 cati rmi article ride edit ner .com 設置 1、關於swift和調試,swift在ios7.0才支持,ios8.3系統的真機必需要xcode6.3才幹調試。安裝xcode6.3需要os x 10.10以上 2、應用程序由Main.

IOS開發——objectForKey與valueForKey在NSDictionary中的差異

什麽 iat app 報錯信息 lease 方法 去掉 defined atom 從 NSDictionary 取值的時候有兩個方法,objectForKey: 和 valueForKey:,這兩個方法具體有什麽不同呢? 先從 NSDictionary 文檔中來看這兩個方法

linux驅動開發framebuffer應用編程實踐(一)

linux驅動開發之framebuffer驅動 1、framebuffer應用編程 (1)打開設備文件 (2)獲取設備信息 宏定義的命令在/linux/fb.h中 不可變信息FSCREENINFO,使用ioctl參數有FBIOGET_FSCREENINFO宏名,表示用ioctl從

ios開發--鍵盤的監聽

efault key nil self. transform blog mar form owa 監聽鍵盤的彈出,讓整個頁面向上移動,比較簡單,僅做記錄使用: 代碼如下: // 監聽鍵盤 [[NSNotificationCenter defaultCenter]

ios開發--CAKeyframeAnimation的詳細用法

edi true nco 創建 rds repeat oval iat ima 簡單的創建一個帶路徑的動畫效果,比較粗糙,不過事先原理都是一樣的, 代碼如下: 1,創建動畫所需的view -(void)creatView { moveView = [UIView

ios開發--CGRect/CGSize/CGPoint/CGVector/CGAffineTransform/UIEdgeInsets/UIOffset和NSString之間的轉換

距離 轉換 nsstring transform ans ins -c cto cnblogs 僅做記錄,一個函數和字符串之間的互相轉換 方法如下: UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UI

iOS開發解析XML格式數據

trac pri dsta service ext inset ech dna 們的 XML格式的數據是一種數據的傳輸格式。因為它方便編寫。結構清晰,所以深受程序猿的喜愛,非常多人都喜歡使用XML格式數據傳輸或者作

iOS開發地圖與定位

control 移動 idt line tor mkmapview 什麽 .cn 構建   不管是QQ還是微信的移動client都少不了定位功能,之前在微信demo中沒有加入定位功能,今天就寫個定位的小demo來了解一下定位和地圖的東西。地圖和定位看上去是挺高大