Foundation框架

什麼是框架ios

衆多功能\API的集合api

 

Foundation框架的做用數組

Foundation框架是Mac\iOS中其餘框架的基礎緩存

Foundation框架包含了不少開發中經常使用的數據類型:服務器

結構體網絡

枚舉app

框架

 

如何使用Foundation框架函數

要想使用Foundation框架中的功能,包含它的主文件便可atom

#import <Foundation/Foundation.h>

 

Foundation框架中的類

Foundation框架提供了很是多好用的類, 好比

NSString : 字符串

NSArray : 數組

NSDictionary : 字典

NSDate : 日期

NSData : 數據

NSNumber : 數字

 

Foundation框架中的類都是以NS爲前綴(Next Step的縮寫)

喬布斯於1976年創立蘋果公司

喬布斯於1985年離開蘋果公司, 創立NeXT公司, 開發了Next Step操做系統

在開發Next Step操做系統過程當中產生了Foundation框架

1997年, 蘋果公司收購NeXT公司, 喬布斯重返蘋果公司(Mac系統就是基於Next Step系統)

2007年, 蘋果公司發佈了iOS系統(iOS系統基於Mac系統)

不當心修改了系統文件

有時候會在不經意之間修改了系統自帶的頭文件, 好比NSString.h, 這時會出現如下錯誤:

解決方案很簡單, 只須要刪除Xcode的緩存便可, 緩存路徑是

/Users/用戶名/Library/Developer/Xcode/DerivedData

(默認狀況下, 這是一個隱藏文件夾)

 

要想看到上述文件夾, 必須在終端敲指令顯示隱藏文件夾, 指令以下

顯示隱藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true

隱藏隱藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false

(輸入指令後, 必定要從新啓動Finder)

NSString

什麼是NSString

一個NSString對象就表明一個字符串(文字內容)

通常稱NSString爲字符串類

 

右圖中的文字內容廣泛都是用NSString來表示的

NSString的建立

NSString的建立方式比較多

最直接的方式(這是常量字符串)

NSString *str = @"I'm in itcast.";

 

格式化的方式

NSString *str = [NSString stringWithFormat:@"My age is %d", 10];

NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];

 

從文件中讀取

從URL中讀取

從文件中讀取

// 用來保存錯誤信息

NSError *error = nil;

 

// 讀取文件內容

NSString *str = [NSString stringWithContentsOfFile:@"/Users/mj/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&error];

 

// 若是有錯誤信息

if (error) {

    NSLog(@"讀取失敗, 錯誤緣由是:%@", [error localizedDescription]);

} else { // 若是沒有錯誤信息

    NSLog(@"讀取成功, 文件內容是:\n%@", str);

}

從URL中讀取

// 用來保存錯誤信息

NSError *error = nil;

 

// 建立URL路徑

NSURL *url = [NSURL URLWithString:@"file:///Users/mj/Desktop/test.txt"];

 

// 讀取文件內容

NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

 

// 若是有錯誤信息

if (error) {

    NSLog(@"讀取失敗, 錯誤緣由是:%@", [error localizedDescription]);

} else { // 若是沒有錯誤信息

    NSLog(@"讀取成功, 文件內容是:\n%@", str);

}

URL

什麼是URL

URL的全稱是Uniform Resource Locator(統一資源定位符)

URL是互聯網上標準資源的地址

互聯網上的每一個資源都有一個惟一的URL,它包含的信息指出資源的位置

根據一個URL就能找到惟一的一個資源

 

URL的格式

基本URL包含協議、主機域名(服務器名稱\IP地址)、路徑

舉例: http://ios.itcast.cn/ios/images/content_25.jpg

能夠簡單認爲: URL == 協議頭://主機域名/路徑

 

常見的URL協議頭(URL類型)

http\https :超文本傳輸協議資源, 網絡資源

ftp :文件傳輸協議

file :本地電腦的文件

URL的建立

傳入完整的字符串建立

NSURL *url = [NSURL URLWithString:@"file:///Users/mj/Desktop/str.txt"];

 

經過文件路徑建立(默認就是file協議的)

NSURL *url = [NSURL fileURLWithPath:@"/Users/mj/Desktop/str.txt"];

NSString的存儲

能夠將NSString存儲到一個文件中

NSString  *str = @"哇哈哈哈";

[str writeToFile:@"/Users/mj/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

 

[str writeToURL:[NSURL URLWithString:@"/Users/mj/Desktop/str.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];

NSString的大小寫處理

- (NSString *)uppercaseString;

所有字符轉爲大寫字母

 

- (NSString *)lowercaseString

所有字符轉爲小寫字母

 

- (NSString *)capitalizedString

首字母變大寫,其餘字母都變小寫

NSString的比較

- (BOOL)isEqualToString:(NSString *)aString;

兩個字符串的內容相同就返回YES, 不然返回NO

 

- (NSComparisonResult)compare:(NSString *)string;

這個方法能夠用來比較兩個字符串內容的大小

比較方法: 逐個字符地進行比較ASCII值,返回NSComparisonResult做爲比較結果

NSComparisonResult是一個枚舉,有3個值:

若是左側   > 右側,返回NSOrderedDescending,

若是左側   < 右側,返回NSOrderedAscending,

若是左側  == 右側返回NSOrderedSame

 

- (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;

忽略大小寫進行比較,返回值與compare:一致

NSString的搜索

- (BOOL)hasPrefix:(NSString *)aString;

是否以aString開頭

 

- (BOOL)hasSuffix:(NSString *)aString;

是否以aString結尾

 

- (NSRange)rangeOfString:(NSString *)aString;

用來檢查字符串內容中是否包含了aString

若是包含, 就返回aString的範圍

若是不包含, NSRange的location爲NSNotFound, length爲0

NSRange

NSRange是Foundation框架中比較經常使用的結構體, 它的定義以下:

typedef struct _NSRange {

    NSUInteger location;

    NSUInteger length;

} NSRange;

// NSUInteger的定義

typedef unsigned int NSUInteger;

 

NSRange用來表示事物的一個範圍,一般是字符串裏的字符範圍或者數組裏的元素範圍

 

NSRange有2個成員

NSUInteger location : 表示該範圍的起始位置

NSUInteger length : 表示該範圍內的長度

 

好比@「I love iOS」中的@「iOS」能夠用location爲7,length爲3的範圍來表示

NSRange的建立

有3種方式建立一個NSRange變量

方式1

NSRange range;

range.location = 7;

range.length = 3;

 

方式2

NSRange range = {7, 3};

或者 

NSRange range = {.location = 7,.length = 3};

 

方式3 : 使用NSMakeRange函數

NSRange range = NSMakeRange(7, 3);

NSString的截取和替換

- (NSString *)substringFromIndex:(NSUInteger)from;

從指定位置from開始(包括指定位置的字符)到尾部

 

- (NSString *)substringToIndex:(NSUInteger)to;

從字符串的開頭一直截取到指定的位置to,但不包括該位置的字符

 

- (NSString *)substringWithRange:(NSRange)range;

按照所給出的NSRange從字符串中截取子串

 

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;

用replacement替換target

 

NSString與路徑

- (BOOL)isAbsolutePath;

是否爲絕對路徑

 

- (NSString *)lastPathComponent;

得到最後一個目錄

 

- (NSString *)stringByDeletingLastPathComponent;

刪除最後一個目錄    

 

- (NSString *)stringByAppendingPathComponent:(NSString *)str;

在路徑的後面拼接一個目錄

(也可使用stringByAppendingString:或者stringByAppendingFormat:拼接字符串內容)

NSString與文件拓展名

- (NSString *)pathExtension;

得到拓展名

 

- (NSString *)stringByDeletingPathExtension;

刪除尾部的拓展名

 

- (NSString *)stringByAppendingPathExtension:(NSString *)str;

在尾部添加一個拓展名

NSString的其餘用法

- (NSUInteger)length;

返回字符串的長度(有多少個文字)    

 

- (unichar)characterAtIndex:(NSUInteger)index;

返回index位置對應的字符

 

轉爲基本數據類型

- (double)doubleValue;

- (float)floatValue;

- (int)intValue;

 

- (char *)UTF8String;

轉爲C語言中的字符串

NSString去除空格

去除全部的空格

[str stringByReplacingOccurrencesOfString:@" " withString:@""]

 

去除首尾的空格

[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

 

NSMutableString

NSMutableString是NSString的子類

 

NSMutableString和NSString的區別

NSString是不可變的,  裏面的文字內容是不能進行修改的

NSMutableString是可變的, 裏面的文字內容能夠隨時更改

 

NSMutableString能使用NSString的全部方法

 

NSMutableString的經常使用方法

- (void)appendString:(NSString *)aString;

拼接aString到最後面

 

- (void)appendFormat:(NSString *)format, ...;

拼接一段格式化字符串到最後面

 

- (void)deleteCharactersInRange:(NSRange)range;

刪除range範圍內的字符串

 

- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;

在loc這個位置中插入aString

 

- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;

使用aString替換range範圍內的字符串

 

NSArray

什麼是NSArray

NSArray是OC中的數組類, 開發中建議儘可能使用NSArray替代C語言中的數組

 

C語言中數組的弊端

int array[4] = {10, 89, 27, 76};

只能存放一種類型的數據

不能很方便地動態添加數組元素

不能很方便地動態刪除數組元素

 

NSArray的使用注意

只能存聽任意OC對象, 而且是有順序的

不能存儲非OC對象, 好比int\float\double\char\enum\struct等

它是不可變的, 一旦初始化完畢後, 它裏面的內容就永遠是固定的, 不能刪除裏面的元素, 也不能再往裏面添加元素

 

NSArray的建立

NSArray常見的建立方式有

+ (instancetype)array;

+ (instancetype)arrayWithObject:(id)anObject;

+ (instancetype)arrayWithObjects:(id)firstObj, ...;

+ (instancetype)arrayWithArray:(NSArray *)array;

 

+ (id)arrayWithContentsOfFile:(NSString *)path;

+ (id)arrayWithContentsOfURL:(NSURL *)url;

 

能夠將一個NSArray保存到文件中

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

 

 

NSArray的檢索

- (NSUInteger)count;

獲取集合元素個數

 

- (id)objectAtIndex:(NSUInteger)index; 

得到index位置的元素

 

- (BOOL)containsObject:(id)anObject; 

是否包含某一個元素

 

- (id)lastObject; 

返回最後一個元素

 

- (id)firstObject; 

返回最後一個元素

 

NSArray的檢索

- (NSUInteger)indexOfObject:(id)anObject;

查找anObject元素在數組中的位置(若是找不到,返回-1)

 

- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;

在range範圍內查找anObject元素在數組中的位置

 

NSArray的簡寫

自從2012年開始, Xcode的編譯器多了不少自動生成代碼的功能, 使得OC代碼更加精簡

 

數組的建立

以前

[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];

 

如今

@[@"Jack", @"Rose", @"Jim"];

 

數組元素的訪問

以前

[array objectAtIndex:0];

如今

array[0];

 

NSArray給全部元素髮消息

- (void)makeObjectsPerformSelector:(SEL)aSelector;

- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument;

讓集合裏面的全部元素都執行aSelector這個方法

NSArray遍歷元素

遍歷, 就是將NSArray裏面的全部元素一個一個取出來查看

 

常見的遍歷方式有

普通遍歷

for (int i = 0; i<array.count; i++) {  }

 

快速遍歷

for (id obj in array) {  }

 

Block遍歷

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    }];

 

NSArray與NSString

- (NSString *)componentsJoinedByString:(NSString *)separator;

這是NSArray的方法, 用separator做拼接符將數組元素拼接成一個字符串

 

- (NSArray *)componentsSeparatedByString:(NSString *)separator;

這是NSString的方法, 將字符串用separator做爲分隔符切割成數組元素

 

 

NSMutableArray

什麼是NSMutableArray

NSMutableArray是NSArray的子類

NSArray是不可變的, 一旦初始化完畢後, 它裏面的內容就永遠是固定的, 不能刪除裏面的元素, 也不能再往裏面添加元素

NSMutableArray是可變的, 隨時能夠往裏面添加\更改\刪除元素

NSMutableArray添加元素

- (void)addObject:(id)object;

添加一個元素

 

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

添加otherArray的所有元素到當前數組中

 

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

在index位置插入一個元素

 

NSMutableArray刪除元素

- (void)removeLastObject;

刪除最後一個元素

 

- (void)removeAllObjects;

刪除全部的元素

 

- (void)removeObjectAtIndex:(NSUInteger)index;

刪除index位置的元素

 

- (void)removeObject:(id)object;

刪除特定的元素

 

- (void)removeObjectsInRange:(NSRange)range;

刪除range範圍內的全部元素

 

NSMutableArray替換元素

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

用anObject替換index位置對應的元素

 

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

交換idx1和idx2位置的元素

 

NSMutableArray的簡寫

設置元素

之前

[array replaceObjectAtIndex:0 withObject:@"Jack"];

 

如今

array[0] = @"Jack";

 

NSDictionary

什麼是NSDictionary

NSDictionary翻譯過來叫作」字典」

平常生活中, 「字典」的做用: 經過一個拼音或者漢字, 就能找到對應的詳細解釋

NSDictionary的做用相似: 經過一個key, 就能找到對應的value

NSDictionary是不可變的, 一旦初始化完畢, 裏面的內容就沒法修改

 

NSDictionary的建立

+ (instancetype)dictionary;

+ (instancetype)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key;

+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...;

+ (id)dictionaryWithContentsOfFile:(NSString *)path;

+ (id)dictionaryWithContentsOfURL:(NSURL *)url;

 

NSDictionary的常見使用

- (NSUInteger)count;     

返回字典的鍵值對數目

 

- (id)objectForKey:(id)aKey;

根據key取出value

 

將字典寫入文件中

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

 

NSDictionary的遍歷

快速遍歷

for (NSString *key in dict) { }

 

Block遍歷

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

    

}];

 

NSDictionary的簡寫

NSDictionary的建立

之前

[NSDictionary dictionaryWithObjectsAndKeys:@"Jack", @"name", @"男", @"sex", nil];

 

如今

@{@"name": @"Jack", @"sex" : @"男」};

 

NSDictionary獲取元素

之前

[dict objectForKey:@"name」];

 

如今

dict[@"name」];

 

NSMutableDictionary

什麼是NSMutableDictionary

NSMutableDictionary是NSDictionary的子類

NSDictionary是不可變的, 一旦初始化完畢後, 它裏面的內容就永遠是固定的, 不能刪除裏面的元素, 也不能再往裏面添加元素

NSMutableDictionary是可變的, 隨時能夠往裏面添加\更改\刪除元素

 

NSMutableDictionary的常見操做

- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;

添加一個鍵值對(會把aKey以前對應的值給替換掉)

 

- (void)removeObjectForKey:(id)aKey;

經過aKey刪除對應的value

 

- (void)removeAllObjects;

刪除全部的鍵值對

 

NSMutableDictionary的簡寫

設置鍵值對

之前

[dict setObject:@"Jack" forKey:@"name」];

 

如今

dict[@"name"] = @"Jack";

 

 

NSFileManager

什麼是NSFileManager

顧名思義, NSFileManager是用來管理文件系統的

它能夠用來進行常見的文件\文件夾操做

 

NSFileManager使用了單例模式

 

使用defaultManager方法能夠得到那個單例對象

[NSFileManager defaultManager]

NSFileManager的常見判斷

- (BOOL)fileExistsAtPath:(NSString *)path;

path這個文件\文件夾是否存在

 

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory;

path這個文件\文件夾是否存在, isDirectory表明是否爲文件夾

 

- (BOOL)isReadableFileAtPath:(NSString *)path;

path這個文件\文件夾是否可讀

 

- (BOOL)isWritableFileAtPath:(NSString *)path;

path這個文件\文件夾是否可寫

 

- (BOOL)isDeletableFileAtPath:(NSString *)path;

path這個文件\文件夾是否可刪除

 

NSFileManager的文件訪問

- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error;

得到path這個文件\文件夾的屬性

 

- (NSArray *)subpathsAtPath:(NSString *)path;

- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;

得到path的全部子路徑

 

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;

得到path的當前子路徑

 

- (NSData *)contentsAtPath:(NSString *)path;

得到文件內容

 

NSFileManager的文件操做

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;

拷貝

 

- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;

移動(剪切)

 

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;

刪除

 

NSFileManager的文件操做

- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error;

建立文件夾(createIntermediates爲YES表明自動建立中間的文件夾)

 

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;

建立文件

(NSData是用來存儲二進制字節數據的)

 

 

文件下載的簡單思路

2.服務器發出響應,返回文件數據

 

3.手機客戶端利用NSData來存放

服務器返回的文件數據

 

4.利用NSFileManager將NSData

裏面的文件數據寫到新的文件中

 

NSPoint\CGPoint

CGPoint和NSPoint是同義的

typedef CGPoint NSPoint;

 

CGPoint的定義

struct CGPoint {

  CGFloat x;

  CGFloat y;

};

typedef struct CGPoint CGPoint;

typedef double CGFloat;

 

CGPoint表明的是二維平面中的一個點

可使用CGPointMake和NSMakePoint函數建立CGPoint

 

NSSize\CGSize

CGSize和NSSize是同義的

typedef CGSize NSSize;

 

CGSize的定義

struct CGSize {

  CGFloat width;

  CGFloat height;

};

typedef struct CGSize CGSize;

 

CGSize表明的是二維平面中的某個物體的尺寸(寬度和高度)

可使用CGSizeMake和NSMakeSize函數建立CGSize

NSRect\CGRect

CGRect和NSRect是同義的

typedef CGRect NSRect;

 

CGRect的定義

struct CGRect {

  CGPoint origin;

  CGSize size;

};

typedef struct CGRect CGRect;

 

CGRect表明的是二維平面中的某個物體的位置和尺寸

可使用CGRectMake和NSMakeRect函數建立CGRect

 

NSNumber

NSArray\NSDictionary中只能存放OC對象, 不能存放int\float\double等基本數據類

若是真想把基本數據(好比int)放進數組或字典中, 須要先將基本數據類型包裝成OC對象

NSNumber的建立

之前

+ (NSNumber *)numberWithInt:(int)value;

+ (NSNumber *)numberWithDouble:(double)value;

+ (NSNumber *)numberWithBool:(BOOL)value;

 

如今

@10;

@10.5;

@YES;

@(num);

NSNumber的經常使用方法

從NSNumber中取出以前包裝的基本數據類型

- (char)charValue;

- (int)intValue;

- (long)longValue;

- (double)doubleValue;

- (BOOL)boolValue;

- (NSString *)stringValue;

 

- (NSComparisonResult)compare:(NSNumber *)otherNumber;

- (BOOL)isEqualToNumber:(NSNumber *)number;

NSValue

NSNumber是NSValue的子類, 但NSNumber只能包裝數字類型

 

NSValue能夠包裝任意值

 

所以, 能夠用NSValue將結構體包裝後, 加入NSArray\NSDictionary中

常見結構體的包裝

爲了方便 結構體 和 NSValue 的轉換, Foundation提供瞭如下方法

將結構體包裝成NSValue對象

+ (NSValue *)valueWithPoint:(NSPoint)point;

+ (NSValue *)valueWithSize:(NSSize)size;

+ (NSValue *)valueWithRect:(NSRect)rect;

 

從NSValue對象取出以前包裝的結構體

- (NSPoint)pointValue;

- (NSSize)sizeValue;

- (NSRect)rectValue;

 

 

任意數據的包裝

NSValue提供了下列方法來包裝任意數據

+ (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type;

value參數 : 所包裝數據的地址

type參數 : 用來描述這個數據類型的字符串, 用@encode指令來生成

 

從NSValue中取出所包裝的數據

- (void)getValue:(void *)value;

 

NSDate

NSDate能夠用來表示時間, 能夠進行一些常見的日期\時間處理

 

一個NSDate對象就表明一個時間

 

[NSDate date]返回的就是當前時間

 

NSDate日期格式化

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

 

// 將NSString轉換爲NSDate

NSDate *date = [formatter dateFromString:@"2010-03-24 00:00:00"];

 

// 將NSDate轉換爲NSString

NSLog(@"%@", [formatter stringFromDate:date]);

 

NSCalendar

結合NSCalendar和NSDate能作更多的日期\時間處理

 

得到NSCalendar對象

NSCalendar *calendar = [NSCalendar currentCalendar];

 

得到年月日

- (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)date;

 

比較兩個日期的差距

- (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSCalendarOptions)opts;

 

 

NSObject

NSObject能夠是全部類的基類, 內部定義了不少經常使用的方法

- (BOOL)isKindOfClass:(Class)aClass;

判斷是否爲aClass或者aClass的子類的實例

 

- (BOOL)isMemberOfClass:(Class)aClass

判斷是否爲aClass的實例(不包括aClass的子類)

 

- (BOOL)conformsToProtocol:(Protocol *)aProtocol

判斷對象是否實現了aProtocol協議

 

- (BOOL)respondsToSelector:(SEL)aSelector

判斷對象是否擁有參數提供的方法

 

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;

延遲調用參數提供的方法,方法所需參數用withObject傳入

 

NSString的其餘使用場合

經過類名的字符串形式實例化對象

Class class = NSClassFromString(@"Student");

Student *stu = [[class alloc] init];

 

將類名變成字符串

Class class = [Student class];

NSString *className = NSStringFromClass(class);

 

經過方法的字符串形式實例化方法

SEL selector = NSSelectorFromString(@"setName:");

[stu performSelector:selector withObject:@"Mike"];

 

將方法變成字符串

NSStringFromSelector(@selector(setName:));

集合的內存管理

集合,就是能用來容納OC對象的容器

NSArray、NSDictionary等都是

 

集合有一些內存管理細節

只要將一個對象添加到集合中,這個對象計數器就會 + 1(作一次retain操做)

只要將一個對象從集合中移除,這個對象計數器就會 - 1(作一次release操做)

若是集合被銷燬了,集合裏面的全部對象計數器都會 - 1(作一次release操做)

相關文章
相關標籤/搜索