`

Foundation Kit「Learn Objective-C on Mac

阅读更多

Cocoa

Cocoa框架實際上由Foundation Kit和AppKit兩個不同的框架組成.Foundation框架中有很多有用的,面向數據的低級類和數據類型.此框架主要用來處理界面無關的內容,AppKit則包含了所有的用戶接口對象和高級類.

結構體類型

Cocoa中一些類據類型是使用struct實現的,不使用對象實現的原因就在於性能.對象的開銷比較大(對象都是動態分配的).所以對這種數據類型可以使用三種方式賦值.

typedef struct _NSRange{
unsigned int location;
unsigned int length;
}NSRange;

1.
NSRange range;
range.lcation=17;
range.length=4;

2.
NSRange range =(17,4);

3.
NSRage range =NSMakeTange(17,4);

其他還有NSPoint,NSSize,NSRect等數據類型也是如此,除了1,2種賦值方法外,也都有對應的函數可以生成數據:NSMakePoint(),NSMakeSize(),NSMakeRect()等.

NSString

@""是NSString字面量寫法.

NSString可以准確地處理Unicode字符串.

+ stringWithFormat:類級方法,通過格式化字符串和一組參數輸出格式化後的結果.

– isEqualToString:對象級方法,比較與所給的字符串是否相同.

Cocoa中的字符串是對象,所以不能用 == 號來比較.如果使用 == 號比較兩個字符串對象,那麼事實上是比較了兩個對象的指針.

– compare:與給定的字符串比較(區分大小寫),返回一個枚舉值作為結果.

– compare:options:

– compare:options:range:

– compare:options:range:locale:字符串比較方法,帶選項的版本(如:是否區分大小寫)

– hasPrefix:測試是否以給定的字符串開頭

– hasSuffix:測試是否以給定的字符串結尾

– rangeOfString:查詢給定字符串在字符串對象中的位置.

NSMutableString

NSString的子類,NSMutableString是NSString的可修改版本.

+ stringWithCapacity:容量建議值.對象會以此方法給出的建議值劃分出一塊內存作為可變字符串對象的初始大小.合理使用可以提高性能.

– appendFormat:向字符串對象追加內容.

– appendString:使用格式化方式向字符串對象追加內容.

– deleteCharactersInRange:從字符串對象的指定范圍中刪除字符串.

集合

NSArray

NSArrary是一個用來存儲對象的有序列表.

限制:只能存儲Objective-C對象.不能存儲C語言中的基本數據類型(如int,float,enum,struct,或者NSArray中的隨機指針),也不能存儲nil或者NULL值.

– count獲得列表包含的對象數.

– objectAtIndex:獲取特定索引處的對象.索引值超出范圍時,將引發一個異常.

Cocoa框架中對象往往都是以類族的形式實現的.如:NSArray對象可能會在運行時發現其實運作的是NSCFArray(來自Core Foundation框架(C語言的實現版本),很多Cocoa對象都是如此做橋接的).

NSMutableArray

NSArray的可變版本.

+ arrayWithCapacity:以建議值作為初始化大小.

– addObject:追加對象

– removeObjectAtIndex:從指定索引處刪除對象

NSEnumerator

遍歷集合時:

使用for循環向集合對象發送objectAtIndex:消息來獲取對象.

使用枚舉對象來完成遍歷集合的工作.

Mac OS X Tiger 之前的系統,支持的語法:

NSEnumerator*enumerator;

enumerator = [array objectEnumerator];

id thingie;

while(thingie = [enumeratornextObject]){
//something to do.
}

即向集合對象發送objectEnumerator消息,以獲取一個枚舉對象(或者NSEnumerator類或其子類的實例),然後在while循環中向此枚舉對象循環發送nextObject以依次獲取枚舉中的每個對象,直到枚舉的末尾(直到nextObject消息返回一個nil對象).

Mac OS X Leopard之後的系統可使用如下語法:

for(NSString *stringinarray){
//to do something.
}

NSDictionary / NSMutableDictionary

字典對象(及可變型字典對象).

+ dictionaryWithObjectsAndKeys:使用所給的鍵值對建立字典.

– setObject:forKey:添加字典項

– removeObjectForKey:刪除字典項

不要擴展Cocoa框架下的類

Cocoa中許多類都是以類簇的方式實現的.即它們是一群隱藏在通用接口下的與實現相關的類.

比如:使用NSString對象的是個,實際上獲得的可能是NSLiteralString,NSCFString,NSSimpleCString,NSBallofString或者其他未寫入文檔的與實現相關的對象.

不要想著為以類簇方式實現的類添加子類,這可能是很痛苦的事情,想要擴展這類類的能力時,可考慮"復合"或者"類別".

數值類

NSNumber

用於包裝基本數據類型,如:int,float等.成為一個對象,以便將基本數據類型放入集合類中.

+ numberWithBool:由布爾型生成對象

+ numberWithChar:字符型

+ numberWithDouble:雙精度浮點型

+ numberWithFloat:單精度浮點型

+ numberWithInt:整型

+ numberWithInteger:ObjC整型

+ numberWithLong:長整型

+ numberWithLongLong:長長整型

+ numberWithShort:短整型

使用以下方法可以從對象中提取回基本數據型值.

– boolValue

– charValue

– decimalValue

– doubleValue

– floatValue

– intValue

– integerValue

– longLongValue

– longValue

– shortValue

都是顧名思義的方法名.

NSValue

NSValue是NSNumber的父類,可以用來包裝任意值.NSNumber不能包裝的struct,也可以用這個類來包裝.

+ valueWithBytes:objCType:第一參數傳入要包裝的數值的地址.第二個參數為數據類型的描述字符串(一般可以直接用@encode命令來生成)

NSRect rect = NSMakeRect(1,2,30,40);

NSValue *value = [NSValue valueWithBytes:&rect objCType:@encode(NSRect)];

[array addObject:value];

使用- getValue:方法可以從NSValue對象中提取出數據的指針(可以看到get前輟的方法約定,總是用來提取指針,而不是值).

NSValue中有一些方法,可以用來快速包裝Cocoa常用結構體數據類型:

+ valueWithPoint:快速包裝NSPoint對象

+ valueWithRange:NSRange

+ valueWithRect:NSRect

+ valueWithSize:NSSize

NSNull

空類型,由於集合類中不能添加nil值(被用來識別為集合的結尾處),所以你可以使用NSNull對象添加到集合中,以表示空(無,沒有)成員.

分享到:
评论

相关推荐

    Learn Objective-C on the Mac

    Learn Objective-C on the Mac: For OS X and iOS, Second Edition updates a best selling book and is an extensive, newly updated guide to Objective-C. Objective-C is a powerful, object-oriented ...

    Objective-C 基础教程(Amazon超级畅销书)英文版:Learn Objective-C on the Mac (Learn Series)

    Objective–C is a powerful, object–oriented extension of C, making this book the perfect follow–up to Dave Mark’s best–selling Learn C on the Mac, Mac OS X Edition. Whether you’re an experienced...

    Pro Objective-C

    Start reading Pro Objective-C and begin developing high-quality, professional apps on the OS X and iOS platforms using the Objective-C programming language! What you’ll learn Objective-C ...

    Programming in Objective-C(最新第四版)

    Programming in Objective-C is a concise, carefully written tutorial on the basics of Objective-C and object-oriented programming for Apple's iOS and Mac platforms. The book makes no assumptions ...

    《Objective-C2.0程序设计(原书第2版)》_中文完整版

    《Objective-C2.0程序设计(原书第2版)》是Objective-C领域的经典著作,对Objective-C进行了系统而全面的阐述,权威性毋庸置疑。全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、...

    [iPhone开发书籍大全].Learn.Objective-C.on.the.Mac.pdf

    Learn Objective-C on the Mac,英文版本,PDF 格式,大小 5 Mb,作者 Mark Dalrymple、Scott Knaster。 Take your coding skills to the next level with this extensive guide to Objective–C, the native ...

    The Objective-C Programming Language

    This document also provides a foundation for learning about the second component, the Objective-C application frameworks—collectively known as Cocoa. The runtime environment is described in a ...

    Objective-C Programming: The Big Nerd Ranch Guide (2nd Edition)

    Based on Big Nerd Ranch's popular Objective-C Bootcamp, Objective-C Programming: The Big Nerd Ranch Guide covers C, Objective-C, and the common programming idioms that enable developers to make the ...

    Objective-C 2.0程序设计

    书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、方法、数据 类型、表达式、程序结构、继承、多态、动态类型和动态绑定、函数、数组、结构和指针等;第二 部分详细阐述了Foundation...

    《Objective-C 2.0程序设计(原书第2版)》[PDF]

    本书是objective-c领域的经典著作,对objective-c进行了系统而全面的阐述,权威性毋庸置疑。全书共分为四大部分:第一部分全面讲解了objective-c语言的基础知识,包括类、对象、方法、数据类型、表达式、程序结构、...

    Programming in Objective-C, 6th Edition

    Book Description Updated for OS X 10.9 Mavericks, iOS 7, and Xcode 5 Programming in Objective-C is a concise, carefully written tutorial on the basics of Objective-C and object-oriented programming ...

    Objective-C.程序设计(第4版)扫描版带书签

    Objective-C 2.0是Mac OS X系统和iPhone平台下的标准程序设计语言。它基于C语言设计而成,是一种面向对象编程语言,功能非常强大,广泛用于OS X以及多种支持gcc编译器的操作系统,如LINUX、UNIX和Windows系统。 ...

    IOS开发系列—Objective-C之Foundation框架 - KenshinCui - 博客园.pdf

    IOS开发系列—Objective-C之Foundation框架 - KenshinCui - 博客园.pdf

    Programming in Objective-C, 第四版,ePub格式

    Programming in Objective-C, 第四版,ePub格式方便在iPad看。 第四版主要更新了 iOS5 与 ARC 的内容,与最新的 Xcode 4.5 匹配。 目录: Table of Contents 1 Introduction Part I: The Objective-C Language 2...

    Objective-C开发范例代码大全

    展示如何使用Objective-C语言的独有特性以及Foundation框架的众多特性。此外,书中广 泛提供了多种问题的解决方案,包括: ● 使用Xcode进行应用开发 ● 使用字符串、数字与对象集合 ● 使用NSArray、NSString、...

    Programming in Objective-C, 4th Edition

    《Objective-C 2.0程序设计(原书第4版)》是Objective-C领域的经典著作,对Objective-C进行了系统而全面的阐述,权威性毋庸置疑。全书共分为四大部分:第一部分全面讲解了Objective-C语言的基础知识,包括类、对象、...

    Programming in Objective-C 4th Edition Stephen G. Kochan

    Programming in Objective-C is a concise, carefully written tutorial on the basics of Objective-C and object-oriented programming for Apple's iOS and Mac platforms. The book makes no assumptions ...

    Objective-C Programming The Big Nerd Ra - Hillegass, Aaron

    接着对Objective-C和Foundation做了简单明了的介绍,其中包括Objective-C的语法知识,Foundation的常用类,还有内存管理、常用的设计模式等知识。在读者具备了一定的Objective-C知识后,作者用了两章的篇幅,...

    掌握 Objective-C:初学者指南

    Mastering Objective-C: A Beginner’s Guide 《掌握 Objective-C》是一本针对初学者的详细指南,给出了现代程序员对 Objective-C 的看法。 它介绍了 Objective-C 的原理以及当前的 Apple 编程技能和库,使读者能够...

    iSwift 4.0 Objective-C转换Swift代码工具

    iSwift 是一款Mac上实用的Objective-C转换Swift代码工具,可以方便的将Objective-C代码转换为Swift代码,修复了大量问题,增加了Core Foundation等库,iSwift支持直接拖拽文件,简单易用,很实用的一款开发辅助工具...

Global site tag (gtag.js) - Google Analytics