OC入門

Format:樣式蘑志,格式(1、將非(NSString*)類型的變量轉(zhuǎn)化成(NSString*)類型  2、打印字符串需要添加※號或斜杠這種字符)

uppercase:大寫

lowercase:小寫

capitalized:首字母大寫

character:字符浪箭,符號

Index:索引

exchangeObject:數(shù)組中元素位置交換

UTF8String:二進制與OC轉(zhuǎn)化

description:描述

sub:提取

default:單例

alloc:分配空間

Directory:文件夾

Item: 文件

file:文件

data:數(shù)據(jù)

encoding:編譯編碼

48~57  對應(yīng)數(shù)字  1~9

65~90  對應(yīng)字母   A~Z

97~122 對應(yīng)字母 a~z

空指針:NULL

空變量:nil

[NSString stringWithString:str]:類方法

繼承:父類具有的屬性及方法子類直接獲得吨述,稱為繼承枪汪。

派生:子類從父類的基礎(chǔ)上衍生出的新的屬性及方法坛增,稱為派生

代碼編寫

①重寫父類方法兰绣,不需要在.h里重復(fù)聲明搪柑,在.m直接調(diào)用即可

②在真正的開發(fā)中聋丝,更需要保留父類的方法,在父類方法的基礎(chǔ)上添加新的功能工碾。在新功能前添加[super方法名];

③衍生出新的方法及屬性

[superrun]:super表示父類所創(chuàng)建的對象

[selfswim]: self表示一個屬于所處類的具體對象

Father* father1 = [Sonalloc]:father1只是一個指針弱睦,[Sonalloc]才是真正從內(nèi)存中創(chuàng)建得用于存放成員變量的對象

[father1run]:father1這個指針?biāo)傅膶ο蠼K究屬于為她開辟空間的類,而不是創(chuàng)建她的類

變量的出生兩種方式1渊额、變量類型聲明 2况木、屬性定義    前者出生的變量值無法在外函數(shù)使用,而后者可以旬迹,但無法在子類中使用

SELsel =@selector(crash)/(crashWithPeople:)/(setArg:):將《crash無參數(shù)的方法》或《crashWithPeople:有參數(shù)的方法》或《有多個參數(shù)的方式》存入剛聲明的sel選擇器中

[blackManrespondsToSelector:sel] == YES:判斷對象是否具備選擇器中的方法

[blackManperformSelector:sel]:對象執(zhí)行選擇器中的無參數(shù)的方法

[blackManperformSelector:selwithObject:@"kaka”]:對象執(zhí)行選擇器中的輸入?yún)?shù)為kaka的方法

如果只有輸入一個參數(shù)的入口而實際情況需要輸入多個參數(shù)火惊,那么這個參數(shù)可以是一個對象,每一個成員變量包含一個參數(shù)奔垦,用函數(shù)方法將每個參數(shù)的值賦給相應(yīng)的成員變量屹耐,然后在這個多參數(shù)轉(zhuǎn)換成單參數(shù),只不過這個參數(shù)是對象而不是具體的字符串椿猎。說白了惶岭,就是先把本該直接賦給方法的多個參數(shù)的值先用對象初始化的方式進行接收,再通過以對象為參數(shù)的單參數(shù)方法里調(diào)用賦值函數(shù)將對象里成員變量接收到的值賦給需要的多個參數(shù)犯眠。通過對象傳遞多參數(shù)

問題在于如何把對象的成員變量值傳遞到每一個參數(shù)上得賦值函數(shù):

- (void)setName:(NSString*)name AndPhoneNumber:(int)phoneNumber AndAge:(int)age

{

_name= name;

_phoneNumber= phoneNumber;

_age= age;

}

存入選擇器中的方法也可以后期從終端進行輸入:

c語言接收方法名字符串—>字符串 C轉(zhuǎn)OC(UTF)—>存入選擇器—>判斷調(diào)用

SELsel2 =NSSelectorFromString(str);

父類里的成員變量以屬性的形式聲明按灶,就得用self的方法才能在子類中調(diào)用,同時父類中一定會有構(gòu)造方法對成員變量進行初始化筐咧。

APP中對輸入的字符串進行判斷鸯旁、轉(zhuǎn)換和提取量蕊?

BOOLret = [str1isEqualToString:str2];

NSComparisonResultret = [str1compare:str2];

NSComparisonResultret = [str1caseInsensitiveCompare:str2]; (注意:這里字符串不區(qū)分大小寫铺罢,驗證碼就這種)

[strhasPrefix:前綴]

[strhasSuffix:后綴]

[strintValue/floatValue/integerValue]:字符串轉(zhuǎn)換成整型、浮點型危融、無符號長整型

NSString* str = [NSStringstringWithFormat:@"%d",a]其它類型轉(zhuǎn)到字符串畏铆,尤其適用于九九乘法表

NSNumber * intNumber = [NSNumber numberWithInt:10];

NSNumber * floatNumber = [NSNumber numberWithFloat:3.14];

[@8isEqualToNumber:@4]

[@6compare:@4.5]

NSString* str = [[NSStringalloc]initWithUTF8String:arr];C語言字符串轉(zhuǎn)OC字符串

constchar* p = [str UTF8String]  OC字符串轉(zhuǎn)C字符串

NSComparisonResultret = [str1compare:str2]字符串1減去字符串2

NSRangerange = [str1rangeOfString:@“確定字符”]:獲取確定單詞在字符串中的起始位置和終止位置

NSRangerange = NSMakeRange(range.location,range.length)

NSRange  Range = {range.location,range.length};

APP中對漢字串中的某個特定漢字進行提取吉殃?

NSRangerange = {i,1};

NSString* str = [arabicsubstringWithRange:range];

char  a= [strcharacterAtIndex:i]

APP中對字符串進行編輯辞居?

setString

appendString(僅限字符串)楷怒、appendFormat(多類型)

componentsSeparatedByString:@“分隔符”

NSCharacterSet* set = [NSCharacterSetcharacterSetWithCharactersInString:@“多個分隔符,無需逗號隔開”]

[strcomponentsSeparatedByCharactersInSet:set]

[arraycomponentsJoinedByString:@“連接符”]

replaceCharactersInRange:rangewithString

insertString

deleteCharactersInRange:range

NSString* str2 = [str1 stringByAppendingString:@“”]:不可變字符串增加字符串

APP中對數(shù)組進行操作瓦灶?

exchangeObject: 交換數(shù)組元素位置

[[NSArrayalloc]initWithObjects:@"abc",@"def",nil]:數(shù)組初始化賦值

for(idobjectinarray):數(shù)組對象遍歷

[objectisKindOfClass:[SeaRobberclass]] ==YES :判斷數(shù)組中的對象到底屬于哪一類

NSMutableArray* array3 = [[NSMutableArrayalloc]initWithArray:array]:將不可變數(shù)組轉(zhuǎn)化成可變數(shù)組

removeObject:@“”刪除空字符

addObject增加對象

replaceObjectAtIndex:0withObject:@"小麗”: 替換對象

insertObject:@"老王"atIndex:1:  插入對象

exchangeObjectAtIndex:0withObjectAtIndex:1:改變對象

APP中用字典開發(fā)通訊錄鸠删?

NSDictionary* dict =[[NSDictionaryalloc]initWithObjects:@[@"",@""]forKeys:@[@"",@""]];

NSMutableDictionary* dict = [[NSMutableDictionaryalloc]initWithObjects:@[@"",@"",@""]forKeys:@[@"",@"",@""]];

NSDictionary* dict =@{@"6":@"six",@"7":@"seven"};

allValues/allKeys:找到字典的所有值或鍵

setObject:@""forKey:@"81”:增加/修改

setDictionary:@{@"1":@"One”}]:字典重置

removeObjectForKey:@"41”:刪除字典中鍵為41的數(shù)組

removeAllObjects:刪除所有名片(清空)

通訊錄類存名片數(shù)量:[dict count]

APP中“菜單”按鈕用SEL選擇器實現(xiàn)?

SELsel =@selector(crash)無參數(shù)或單雙參數(shù)的方法直接存入(帶參數(shù)的方法后面必須有冒號)

SELsel =@selector(setArg:)創(chuàng)建Arg類的對象和setArg:(Arg*)arg賦值給對象的函數(shù)贼陶,冒號不能少

[對象respondsToSelector:sel2]判斷

[對象performSelector:sel]執(zhí)行

[對象performSelector:selwithObject:@“參數(shù)”]帶參執(zhí)行

- (void)setName:(NSString*)name AndPhoneNumber:(int)phoneNumber AndAge:(int)age{

_name= name;

_phoneNumber= phoneNumber;

_age= age;

}

- (void)setArg:(Arg*)arg{

[selfsetName:arg.nameAndPhoneNumber:arg.phoneNumberAndAge:arg.age];

NSLog(@"%@%d%d",arg.name,arg.phoneNumber,arg.age);

}

從終端輸入方法名字符串的情況

charbuf[10] = {};

scanf("%s",buf);

NSString* str = [[NSStringalloc]initWithUTF8String:buf];

SELsel2 =NSSelectorFromString(str);

APP通過“繼承”為調(diào)用的官方或第三方類添加更適合當(dāng)前項目的方法和屬性刃泡?

APP中提取網(wǎng)絡(luò)時間?

NSDate:時間類(創(chuàng)建的對象就是時間碉怔,返回時間的格式)

[NSDatedate]

NStimeInterval:時間變量類(創(chuàng)建的對象是sec-秒)

[datetimeIntervalSinceNow]:返回date時間距離現(xiàn)在多少秒

[現(xiàn)在timeIntervalSinceDate:出生]:返回現(xiàn)在我已近活了多少秒

NSTimeZone:時間時區(qū)類

NSTimeZone* timeZone = [NSTimeZonesystemTimeZone]:當(dāng)前系統(tǒng)時區(qū)

NSDictionary* dict = [NSTimeZoneabbreviationDictionary]:字典存入所有時區(qū)

NSDateFormatter:時間戳類烘贴,可以通過它改變返回的時間的格式

NSDateFormatter* formatter = [[NSDateFormatteralloc]init];

formatter.dateFormat=@"yyyy年MM月dd日HH時mm分ss.S秒";

formatter.timeZone= [NSTimeZonetimeZoneWithAbbreviation:@"HKT"];

NSDate* date = [NSDatedate];//獲得當(dāng)前時間

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

APP設(shè)置鬧鐘?

NSTimer:定時器類

NSDate* endDate = [NSDatedateWithTimeIntervalSinceNow:3600]:鬧鐘設(shè)在3600秒后

NSData創(chuàng)建的對象默認(rèn)的格式是:@"2015-06-12 08:55:25 +0000"

現(xiàn)在的時間與設(shè)定的時間進行比較:

if(date.timeIntervalSinceReferenceDate> endDate.timeIntervalSinceReferenceDate)

sleep(1);在While的循環(huán)里每隔多少秒循環(huán)判斷一次

APP顯示文件夾里的內(nèi)容路徑撮胧?

NSFileManager:文件管理類

[NSFileManagerdefaultManager]:對象初始化

contents:只查找指定路徑下面的一層文件路徑

subpaths:查找指定路徑的下層所有文件路徑

hasSuffix:有后綴

hasPrefix:有前綴

APP中做文件的緩存桨踪,就像微博,在無網(wǎng)絡(luò)的情況都能刷出已近刷出來得內(nèi)容芹啥?

1锻离、新建文件?

NSFileManager:文件管理類

[NSFileManagerdefaultManager]:對象初始化

fileExists:判斷文件是否存在

createFile:創(chuàng)建文件(路徑墓怀,內(nèi)容汽纠,屬性)

attributesOfItem:獲取文件屬性(用字典接收)

dict[@"NSFileSize”]:文件大小

2、文件編輯傀履?

NSFileManager:文件管理類

[NSFileManagerdefaultManager]:對象初始化

moveItem/removeItem/copyItem

3虱朵、文件讀寫?

NSFileHandle:文件句柄類

[NSFileHandlefileHandleForReadingAtPath:路徑]:對象初始化

NSData:數(shù)據(jù)類

NSString:字符串類

Data encoding:數(shù)據(jù)轉(zhuǎn)字符串

dataUsingEncoding:字符串轉(zhuǎn)數(shù)據(jù)

NSUTF8StringEncoding:二進制與OC

readDataOfLength:閱讀指定長度的字節(jié)數(shù)據(jù)

seekToFileOffset:指定位置讀取字節(jié)

synchronizeFile:文件立即同步

APP中存儲固定數(shù)據(jù)钓账?(存儲的plist文件是什么結(jié)構(gòu)就用什么類)

1卧秘、官方類創(chuàng)建的對象(plist)(自定義類型的數(shù)據(jù)無法存儲,通常存儲長時間不變的數(shù)據(jù))

NSDictionary:字典類(字典鍵對應(yīng)的值可以是數(shù)組名)

writeToFile(路徑字符串)atomically:YES生成plist文件

dictionaryWithContentsOfFile:解析plist文件

new file—>resource—>property list以程序的方法進行設(shè)置

2官扣、自定義類創(chuàng)建的對象(歸檔)

[NSKeyedArchiver archiveRootObject:指針toFile:路徑]:對象歸檔

[NSKeyedUnarchiverunarchiveObjectWithFile:路徑]:對象解檔,檔里是啥類型羞福,就用什么類型創(chuàng)建的對象進行接收惕蹄,且在等號后加一個(類名*)避免出錯

NSObject//遵守歸檔的協(xié)議

//歸檔自定義對象時調(diào)用

-(void)encodeWithCoder:(NSCoder*)aCoder

{

[aCoderencodeInt:self.ageforKey:@"AGE"];

[aCoderencodeObject:self.nameforKey:@"NAME"];

}

//解檔自定義對象時調(diào)用

-(instancetype)initWithCoder:(NSCoder*)aDecoder{

if(self= [superinit])

{

self.age= [aDecoderdecodeIntForKey:@"AGE"];

self.name= [aDecoderdecodeObjectForKey:@"NAME"];

}

returnself;

}


APP中的賬號和密碼存儲及不同界面?zhèn)髦担?
NSUserDefaults:用戶單例類

[NSUserDefaultsstandardUserDefaults]:對象初始化

setObject:值forKey:鍵  :增加鍵和值

synchronize:及時同步

objectForKey:鍵  :取鍵對應(yīng)的值,用字符串對象接收

removeObjectForKey:鍵  :刪除鍵和鍵對應(yīng)的值

APP通過Json格式與服務(wù)器端進行數(shù)據(jù)交換治专?

1卖陵、本地File路徑

//宏定義JSON文件路徑位置

#define  PATH @“路徑”

//Json文件轉(zhuǎn)化成字符串

NSString* str = [NSStringstringWithContentsOfFile:PATHencoding:NSUTF8StringEncodingerror:&error];

//字符串放入緩沖區(qū)轉(zhuǎn)換成二進制數(shù)據(jù)

NSData* data = [strdataUsingEncoding:NSUTF8StringEncoding];

2、網(wǎng)絡(luò)URL網(wǎng)址

//宏定義JSON網(wǎng)絡(luò)路徑位置

#define URL @“網(wǎng)址”

//將網(wǎng)絡(luò)URL字符串轉(zhuǎn)換為可識別的網(wǎng)址的格式

NSURL* url = [NSURLURLWithString:URL];

//Json文件轉(zhuǎn)化成字符串(本地是File路徑  網(wǎng)絡(luò)是URL網(wǎng)址)

NSString* str = [NSString stringWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:nil];

3张峰、對容器的內(nèi)容進行特定提壤崮琛(遇到數(shù)組就接收,遇到字典就遍歷)

字典接受Json所有內(nèi)容

NSDictionary* dict = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];

數(shù)組接受字典里的數(shù)組值

NSArray* Array = Dict[@“鍵”]

遍歷數(shù)組里的每一個字典

for(NSDictionary* Dictin Array)

model對象接收字典里所有不止一個鍵的值(model對象的初始化必須放在數(shù)組的字典遍歷里喘批,否則自動覆蓋已存入信息)

[model setValuesForKeysWithDictionary:字典創(chuàng)建的對象名]://使用它必須model對象的成員名==鍵的名字

APP中輸入四川省彈出四川所有城市名撩荣?

輸入漢字并轉(zhuǎn)化成OC的字符串

chararr[123] = {};

scanf(“%s”,arr);

NSString* str1 = [[NSStringalloc]initWithUTF8String:arr];

漢字是否相等的比較

[str1compare: dict1[@"省"]] ==0 //在元素全是字典的數(shù)組遍歷時铣揉,拿字符串與字典特定鍵對應(yīng)值相比較

([array[i]isEqualToString:str1] ==YES)//先將要比較的字符串通過遍歷的方式加到一個數(shù)組,for循環(huán)數(shù)組逐個與從終端輸入的字符串進行比較

APP中通過XML格式與服務(wù)器進行數(shù)據(jù)交換餐曹?

1逛拱、Xcode里添加GData文件才能解析XML數(shù)據(jù)

①將路徑/usr/include/libxml2添加到工程的頭文件中

Target->build Settings->search->search paths->header search paths ->點擊加號添加路徑

②GData運行在手動內(nèi)存管理下,因為整體工程運行在自動內(nèi)存管理下台猴,所以需要為GData庫添加內(nèi)存管理混編朽合。

Target->build phase- >complie sources->添加-fno-objc-arc

③GData是用libxml這個系統(tǒng)庫,但該系統(tǒng)庫沒有包含在Foundation庫下饱狂,所以需要手動添加系統(tǒng)庫曹步。

Target->build phase->Link binary with Libraries->添加libxml2.dylib

2、1 用XML解析(絕對路徑休讳,從頭到尾)

//XML數(shù)據(jù)轉(zhuǎn)換成字符串

NSString*  xml = [NSStringstringWithContentsOfFile:PATHencoding:NSUTF8StringEncodingerror:nil];

GDataXMLDocument* document = [[GDataXMLDocumentalloc]initWithXMLString:xmloptions:0error:nil];

//逐步進行解析

根元素:GDataXMLElement* rootEle = [documentrootElement];

子元素:GDataXMLElement* booksEle = (GDataXMLElement*)[rootElechildAtIndex:0];

子元素本質(zhì)就是一個包含多個孩子的數(shù)組集合:NSArray* booksArray = [booksElechildren];

遍歷每一個孩子時讲婚,需要先用GDataXMLElement創(chuàng)建一個對象才能接收

遍歷:for(GDataXMLElement* bookEleinbooksArray)

初始化化孩子為對象:GDataXMLElement* summaryEle = [[bookEleelementsForName:@"summary"]firstObject];

2、2用XPATH進行解析(相對路徑)

NSArray* array = [documentnodesForXPath:@"http://book[限制條件]/name|//book[限制條件]/summary"error:nil];

限制條件包括:ID號衍腥、last()磺樱、position(<3)、@ID=2婆咸、@price

for(GDataXMLElement* eleinarray)NSLog(@"%@",ele.stringValue)

注意:有一種XML文件加密了竹捉,叫帶有命名空間的XML文件

NSDictionary* dict =@{@“鍵”:@“值”,@“鍵”:@“值”};//注意:字典添加鍵值對是大括號整袁,而數(shù)組添加對象則是中括號

NSArray* array = [documentnodesForXPath:@"絕對路徑"namespaces:@"命名空間的字典"error:nil];

注意:@"xmlns:root/xmlns:books/xmlns:book/book:name”才是絕對路徑冀泻,而非@"/root/books/book:name"

APP開發(fā)過程中考慮屬性的線程安全問題低千?

@property()是一個屬性訪問聲明想罕,擴號內(nèi)支持以下幾個屬性:

1娱仔、getter=getterName渊抄,setter=setterName拆宛,設(shè)置setter與getter的方法名

2确封、readwrite,readonly需五,設(shè)置可供訪問級別

3鹉动、nonatomic,非原子性訪問宏邮,不加同步泽示,多線程并發(fā)訪問會提高性能。注意蜜氨,如果不加此屬性械筛,則默認(rèn)是兩個訪問方法都為原子型事務(wù)訪問。鎖被加到所屬對象實例級

4飒炎、atomic原子修飾符埋哟,表示線程安全

APP中使用單例的操作?

1郎汪、創(chuàng)建一個普通類和一個類方法

2赤赊、對類創(chuàng)建的對象以類方法的形式進行初始化

3闯狱、類方法就是staticSingleClass* single;//static表示內(nèi)存為這個類創(chuàng)建的對象從始至終只分配一次空間

if(single ==nil) single = [[SingleClassalloc]init];

returnsingle;

4、main函數(shù)里類創(chuàng)建的對象=[類名用來初始化的類方法];

單例對象地址都是靜態(tài),所以其實就一個內(nèi)存地址

App中實現(xiàn)類別:為官方類添加方法補犊仇扩氢?

也就是在新出現(xiàn)的頭文件和 . m文件中分別一種類封裝的形式進行處理!頭文件寫方法名爷辱,.m文件寫實現(xiàn)录豺!類別里可以直接使用官方類的方法和屬性變量,而且添加了類別

OC中有多繼承么饭弓?如果沒有該怎么實現(xiàn)双饥?(協(xié)議代理虛擬實現(xiàn))

App中做一個動畫?

過去:

1弟断、開啟動畫

2咏花、設(shè)置屬性

3、動畫結(jié)構(gòu)

現(xiàn)在:

直接調(diào)用一個封裝好的Block阀趴,界面時體會更深

App視頻播放緩沖界面的制作昏翰?(block的傳值與回調(diào))

1、在視頻播放器類里添加視頻播放方法刘急,方法實現(xiàn)寫入內(nèi)容為輸出"下載已完成"的Block;

2棚菊、在下載器的類里添加下載的方法,只是這個方法的定義涉及到Block的傳值;(類型+Block名)輸入輸出地類型都寫叔汁,中間用(^)隔開;

-(void)downLoadWithBlock:(void(^)(NSString*))videoBlock;

3统求、在下載器的方法實現(xiàn)里在下載完成后使用Block;

4、在播放器的實現(xiàn)方法中創(chuàng)建一個下載器的對象調(diào)用下載器里的方法(去類型,留塊名);

5据块、通過Block的參數(shù)可以把一個類里地值傳到里一個類里码邻。界面?zhèn)髦当举|(zhì)就是傳參數(shù);

在ARC自動內(nèi)存管理的情況下再通過少量代碼增加MRC手動內(nèi)存管理另假,手機運行App時盡可能減少內(nèi)存的使用像屋?避免浪費用戶的機器資源?

內(nèi)存管理本質(zhì):管理對象的引用計數(shù)(指向?qū)ο罂臻g地址的個數(shù))

內(nèi)存泄露:內(nèi)存空間使用完畢之后未回收

release和dealloc的區(qū)別边篮?

無直接關(guān)系开睡,只是對引用計數(shù)進行減一操作

dealloc才是真正釋放內(nèi)存(當(dāng)引用計數(shù)器為0時自動調(diào)用)

面向?qū)ο蟮谋举|(zhì)在于,對許多對象提取出共性放在一起處理苟耻。這樣,各式容器的使用就是無可避免的了

將一個具體的類有手動內(nèi)存管理轉(zhuǎn)化成自動內(nèi)存管理扶檐?(刪除可以刪的所有release手動釋放代碼)

Edit—>Refactor—>convert ··ARC—>選擇類

copy常用于修飾字符串(NSString)通常其他對象使用retain進行修飾符

strong與retain用法相同在MRC下通常使用retain修飾屬性凶杖,而在ARC下通常使用strong修飾屬性

類方法創(chuàng)建對象:NSString * str = [[NSString alloc]init];對象是被系統(tǒng)自動歸到自動釋池下管理(典型的標(biāo)志就是沒有alloc)

實例創(chuàng)建的對象:NSString * str = [NSString StringWithString:@"Carden"];如果在手動內(nèi)存管理模式下,需要用release方法進行釋放

在@implementation下聲明的變量是這個類的私有變量款筑,外部是無法訪問的

在@interface下聲明的變量可以設(shè)定為全局或者私有變量

在@property聲明的就是全局變量智蝠,外部既可以訪問腾么,內(nèi)部也可以調(diào)用

多態(tài):子類重寫父類方法,然后用父類引用指向子類對象杈湾,調(diào)用方法時候會進行動態(tài)綁定解虱,這就是多態(tài)。多態(tài)對程序的擴展具有非常大的作用漆撞,如果有配置文件甚至可以不動源碼殴泰。

Father* father1 = [Sonalloc];//父類的指針可以指向子類的對象

[father1run];//執(zhí)行方法,不看指針浮驳,而是看對象是通過哪個類來開辟空間創(chuàng)建

協(xié)議與Block的比較悍汛?

協(xié)議本質(zhì):

1類方法里創(chuàng)建協(xié)議和實現(xiàn)2類方法的協(xié)議屬性;2類添加協(xié)議所在的頭文件和<協(xié)議名稱>;

創(chuàng)建1類對象,創(chuàng)建2類對象,把2類對象賦值給1類屬性,1類對象執(zhí)行方法

Block本質(zhì):

1類方法里創(chuàng)建塊方法和實現(xiàn)2類方法的2類對象;2類方法的參數(shù)為塊類型,滿足條件后執(zhí)行塊方法;

創(chuàng)建1類對象,1類對象執(zhí)行方法

傳值本質(zhì):

方法1包含方法2至会,方法1的的參數(shù)變量直接寫成方法2的輸入?yún)?shù)离咐,只要方法調(diào)用方法就可以做到。

傳值始終:

協(xié)議的初始值出現(xiàn)在主動類的方法里奉件,Block的初始值出現(xiàn)在包含Block類型的方法里宵蛀。

- (void)button:(BOOL)state AndBlock:(void(^)(BOOL))block;

協(xié)議作用:

協(xié)議可以讓類1和類2甚至類3等完全不同的類各自創(chuàng)建的對象使用同一個方法,而且可以有參數(shù)县貌,因為id類型不論什么類創(chuàng)建的對象都可以接受术陶,也就是說,字符串創(chuàng)建的對象和數(shù)組和字典創(chuàng)建的對象都可以接收

//Document:存放長期要用的文件

//library:存放系統(tǒng)文件

//tmp:存儲臨時文件窃这,APP重啟時瞳别,該目錄下的文件清空

NSLog(@"文件大小:%@",dict[@"NSFileSize"]);

NSFileManager * manager = [NSFileManager defaultManager];

(對象)[文件管理器創(chuàng)建的單例contentsOfDirectoryAtPath(數(shù)組)/subpathsOfDirectoryAtPath(數(shù)組)/attributesOfItemAtPath(字典)]

(布爾值)[文件管理器創(chuàng)建的單例fileExistsAtPath/createFileAtPath/copyItemAtPath/moveItemAtPath/removeItemAtPath]

文件句柄:指定已知路徑下文件的操作權(quán)限(只讀/只寫/讀寫)

NSFileHandle * fileHandele = [NSFileHandle fileHandleForReadingAtPath/fileHandleForWritingAtPath/fileHandleForUpdatingAtPath]

[文件句柄創(chuàng)建的對象readDataOfLength(數(shù)據(jù))/seekToFileOffset(void)/seekToEndOfFile(void)/writeData:data(void)/synchronizeFile(void)]

NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];//數(shù)據(jù)轉(zhuǎn)字符串

NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];//字符串轉(zhuǎn)數(shù)據(jù)

[已存放內(nèi)容的官方類型指針writeToFile:文件路徑及文件名]  .Plist文件的生成

[NSDictionary dictionaryWithContentsOfFile(內(nèi)容官方類型)]  .Plist文件的讀取

[NSKeyedArchiver archiveRootObject(布爾值)/unarchiveObjectWithFile(內(nèi)容類型)]  .data文件的生成和讀取

基類NSObject后添加歸檔協(xié)議

-(void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder (encodeInt/encodeObject):self.屬性(void)];

}//歸檔-自定義的.m文件添加

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

if(self= [superinit])

{

self.age = [aDecoder decodeIntForKey:@"AGE"];

}

returnself;

}//解檔-自定義的.m文件添加

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];//存儲用戶個人登錄信息的單例對象初始化

[用戶單例創(chuàng)建的對象setObject(void)/objectForKey(字符串)/removeObjectForKey(void)]//增加、提取杭攻、刪除

/*

#import "GDataXMLNode.h"

#define PATH   @"/Users/qianfeng/Desktop/1518OC第10天/xml/xml.txt"

NSString * xml = [NSString stringWithContentsOfFile:PATH encoding:NSUTF8StringEncoding error:nil];

GDataXMLDocument * document = [[GDataXMLDocument alloc]initWithXMLString:xml options:0 error:nil];

NSArray* array = [documentnodesForXPath:@"http://ComeChannel/BuyCarBudget"error:nil];

for(GDataXMLElement* eleinarray)

{

NSLog(@"%@",[[ele addAttribute:for@"name"]stringValue]);

}

GDataXMLElement * rootEle = [document rootElement];

GDataXMLElement * booksEle = (GDataXMLElement*)[rootEle childAtIndex:0];

NSArray * booksArray = [booksEle children];

for (GDataXMLElement * bookEle in booksArray)

{

GDataXMLElement * summaryEle = [[bookEle elementsForName:@"summary"]firstObject];

NSLog(@"%@",summaryEle.name);

NSLog(@"%@",summaryEle.stringValue);

NSLog(@"%@",summaryEle.XMLString);

}

NSDictionary* dict =@[@"book":@"http://www.baidu.com",@"xmlns":@"http://www.sina.com.cn"];

NSArray* array = [document nodesForXPath: namespaces:dict error:nil];

*/

1.判斷字符串中提取的字符類型祟敛?(中文,字母)

2.可變數(shù)組添加的ID為什么不能是NSInteger?

-(NSString*)description{

return[NSString stringWithFormat:@"count = %d   index = %ld",count,(long)indx];

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兆解,一起剝皮案震驚了整個濱河市馆铁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锅睛,老刑警劉巖埠巨,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異现拒,居然都是意外死亡辣垒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門印蔬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋桶,“玉大人,你說我怎么就攤上這事±裕” “怎么了捐韩?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹃锈。 經(jīng)常有香客問我荤胁,道長,這世上最難降的妖魔是什么屎债? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任仅政,我火速辦了婚禮,結(jié)果婚禮上扔茅,老公的妹妹穿的比我還像新娘已旧。我一直安慰自己,他們只是感情好召娜,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布运褪。 她就那樣靜靜地躺著,像睡著了一般玖瘸。 火紅的嫁衣襯著肌膚如雪秸讹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天雅倒,我揣著相機與錄音璃诀,去河邊找鬼。 笑死蔑匣,一個胖子當(dāng)著我的面吹牛劣欢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裁良,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼凿将,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了价脾?” 一聲冷哼從身側(cè)響起牧抵,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侨把,沒想到半個月后犀变,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡秋柄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年获枝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骇笔。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡映琳,死狀恐怖机隙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情萨西,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布旭旭,位于F島的核電站谎脯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏持寄。R本人自食惡果不足惜源梭,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稍味。 院中可真熱鬧废麻,春花似錦、人聲如沸模庐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掂碱。三九已至怜姿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疼燥,已是汗流浹背沧卢。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留醉者,地道東北人但狭。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像撬即,于是被迫代替她去往敵國和親立磁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容