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];
}
OC入門
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門印蔬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋桶,“玉大人,你說我怎么就攤上這事±裕” “怎么了捐韩?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長鹃锈。 經(jīng)常有香客問我荤胁,道長,這世上最難降的妖魔是什么屎债? 我笑而不...
- 正文 為了忘掉前任仅政,我火速辦了婚禮,結(jié)果婚禮上扔茅,老公的妹妹穿的比我還像新娘已旧。我一直安慰自己,他們只是感情好召娜,可當(dāng)我...
- 文/花漫 我一把揭開白布运褪。 她就那樣靜靜地躺著,像睡著了一般玖瘸。 火紅的嫁衣襯著肌膚如雪秸讹。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼凿将,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了价脾?” 一聲冷哼從身側(cè)響起牧抵,我...
- 正文 年R本政府宣布旭旭,位于F島的核電站谎脯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏持寄。R本人自食惡果不足惜源梭,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稍味。 院中可真熱鬧废麻,春花似錦、人聲如沸模庐。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽掂碱。三九已至怜姿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疼燥,已是汗流浹背沧卢。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 在學(xué)習(xí)OC中,關(guān)于OC的幾個重點概念想在這兒做幾點總結(jié)和深入的了解才沧。好了迈喉,話不多說,讓我們開始吧: 1.關(guān)于繼承和...
- 平時開發(fā)難免會遇到Native和Web對接的情況, 在通常情況下, 都是需要Native提供一些數(shù)據(jù)(同步或者異步...
- 我第一周學(xué)會了在類中如何創(chuàng)建一個對象以及編譯器在其中做了什么事情挨摸,簡單來說就是創(chuàng)建一個同名的加下劃線的實例變量還有...
- 『經(jīng)營與傳愛』前提是發(fā)自內(nèi)心!核心是幫助你愛的人找回自己岁歉,輕松快樂地生活得运!放下分?jǐn)?shù)&放下成交膝蜈,便沒有了對被拒絕的恐...