標籤:style class blog java color com
開發環境
自己寫Demo的話,在[MAC OS X]-->[Application]-->[Command Line Tool](命令列模板 ) 設定檔案名稱的時候 Type選擇Foundation系統庫即可
NSLog 輸出格式
• %@ 對象
• %d, %i 整數
• %u 無符整形
• %f 浮點/雙字
• %x, %X 二進位整數
• %o 八進位整數
• %zu size_t
• %p 指標
• %e 浮點/雙字 (科學計算)
• %g 浮點/雙字
• %s C 字串
• %.*s Pascal字串
• %c 字元 竟然只能輸出一個,若是多個的時候,選擇最後一個char做為輸出
• %C unichar
• %lld 64位長整數(long long)
• %llu 無符64位長整數
• %Lf 64位雙字
Note: 多個變數輸出的時候竟然需要寫多個%i,%d之類的(個人現在認知)
int r = 5;int p = 3;NSLog(@"the number is %i %i",p,r);
索引值編碼
定義: 一個用於間接訪問對象屬性的機制 (跟java中的反射貌似很像)
1 這個機制不需要調用存取方法和變數執行個體就可以訪問對象屬性
2 預設的實現方法由NSObject(祖先),NSKeyValueCoding(一個非正式協議的類目錄)中被聲明
3 支援帶有對象值的屬性,純數實值型別,結構,非對象參數和傳回型別會被識別並自動封裝/解鎖
使用:-valueForKey: 和 -setValue: forKey: 這兩個方法(兩個方法都看不明白的,看看方法的定義)
1 以字串的形式向對象發送訊息
2 不存在setter,getter方法時,將在內部尋找名為_key(一種屬性命名的方式,進階注釋有木有,一眼看穿有木有)或key的執行個體變數,可擷取到不存在getter方法的對象值,無需通過對象指標直接存取(我感覺很NB)
3 -setValue: forKey:設定對象的值或者valueForKey來擷取對象的值,若對象的執行個體變數為基本類型(char,int,float,Bool.....)時,我們需要對資料進行封裝(比如IsNumber)
這裡是一個訪問私人變數代碼
//這裡Book類僅僅是定義一個私人的屬性//-----------------------------------------------#import "Book.h"@implementation Book:NSObject{ @private NSString *_name;}@end//這是main.m程式//這裡故意把forkey中的參數寫為name,也能實現,可以看到一種訪問機制//---------------------------------------------------#import <Foundation/Foundation.h>#import "Book.h"int main(int argc, const char * argv[]){ @autoreleasepool { Book *book = [[Book alloc]init]; [book setValue:@"nbbbbb" forKey:@"name"]; NSString *name = [book valueForKey:@"name"]; NSLog(@"%@",name); } return 0;}