Objective-C基础教程读书笔记

Objective-C基础教程是我买的第一本关于iOS开发的书籍,今天拿出来重新阅读,重新学习一遍。

本书的前两章介绍了OC的历史,并创建了一个简单的OC程序,作者写这本书时,iOS才是iOS5,Xcode版本是4.2。今天再来学习,iOS已经是iOS11了,Xcode版本是9.4。真的是变化了不少。按照书中的例子新建一个OC程序。

图片来自网络

图片来自网络

图片来自网络

编写一个简单的程序。

#import <Foundation/Foundation.h>


BOOL areIntsSame(int num1, int num2){
    if (num1 == num2) {
        return YES;
    }
    return NO;
}

NSString *boolString(BOOL yesNo){
    if (yesNo == YES) {
        return @"YES";
    }
    return @"NO";
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        BOOL areTheySame;
        areTheySame = areIntsSame(5, 5);
        NSLog(@"Are %d and %d same? %@.", 5, 5, boolString(areTheySame));
        areTheySame = areIntsSame(10, 5);
        NSLog(@"Are %d and %d same? %@.", 10, 5, boolString(areTheySame));
    }
    return 0;
}

第三章介绍了面向对象编程的基础知识

记一下Xcode如何修改命令行参数,也就是修改启动参数。
使用快捷键shift+command+,

这里写图片描述
在上图中添加启动参数。

一些属于
类(class):是一种表示对象类型的结构体。类名一般首字母大写,可以添加前缀字母,比如我就在经常在自己的类前面添加CYC或者CCY前缀标识。
对象(object实例(instance):是一种包含值和指向其类的隐藏指针的结构体。
消息(message):对象可以执行的操作。
方法(method):为响应消息而运行的代码。
方法调度(method dispatch):是OC使用的一种机制,用于推测执行什么方法来响应某个特定的消息。
接口和实现
接口是类为对象提供的特性描述。实现是使接口能正常工作的代码。OC允许接口和实现间的参数名不同。

OC方法的声明,时间久了就忘了要怎么声明,返回类型在前面,冒号后面跟参数,参数类型用括号括起来。和C语言的函数语法略有不同。

- (void)setColor:(UIColor *)color;

OC中没有真正的私有方法,这是OC动态本质的副作用。有利就有弊。
开放/关闭原则。软件实体应该对扩展开放,对修改关闭。虽然不是很明白,但是觉得说的很有道理。
这一章的代码很多是粘贴复制来的,出现了大量重复的代码。于是引出了第四章的内容——继承。

UML(Unified Modeling Language,统一建模语言),使用UML可以表示类以及类之间的关系。

图片来自网络

OC不支持多继承,可以通过OC的其他特性达到多继承的效果。如类别和协议。

OC方法调度机制

当代码发送消息时,在当前类中搜索相应的方法,如果没找到就在对象的父类中进行查找。如果最后都没有找到,则会出现一个运行时的错误,编译时会有一个警告⚠️信息。

访问实例变量

在创建一个新类时,其对象会从它的父类继承实例变量,再添加自己的实例变量。

重写方法时,调用父类的方法总是一个明智之举,这样可以试想更多的功能。

继承在子类和父类之间建立了一种“is a”(是一个)的关系。
复合的类之间建立的关系是“has a”(有一个)。
复合也是OOP的基础概念,通过复合可以创建引用其他对象的对象。
在实际的开发中,一个类通常会有一个头文件(.h)和一个实现文件(.m)。导入头文件使头文件和源文件之间建立了一种紧密的依赖关系,Xcode记录了所有的依赖关系。使用@class指令告诉编译器“相信我,你会知道这个类的”,可以减少导入头文件的数量,从而缩短了编译时间。
第7章讲了Xcode开发工具,由于当时的版本是4.2,现在版本是9.4。很多地方都变得不一样了。Xcode使开发iOS程序变得更加容易。熟练的使用Xcode可以节省大量的时间,来做一些更有意义的事情。
第八章介绍了Foundation框架,
在Xcode安装目录下,找到Foundation目录

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers

里面包含了所有的头文件,查看这些头文件可以了解更多的内容。

Foundation.apinotes         NSMeasurementFormatter.h
Foundation.h                NSMetadata.h
FoundationErrors.h          NSMetadataAttributes.h
FoundationLegacySwiftCompatibility.h    NSMethodSignature.h
NSArray.h               NSNetServices.h
NSAttributedString.h            NSNotification.h
NSAutoreleasePool.h         NSNotificationQueue.h
NSBundle.h              NSNull.h
NSByteCountFormatter.h          NSNumberFormatter.h
NSByteOrder.h               NSObjCRuntime.h
NSCache.h               NSObject.h
NSCalendar.h                NSOperation.h
NSCharacterSet.h            NSOrderedSet.h
NSCoder.h               NSOrthography.h
NSComparisonPredicate.h         NSPathUtilities.h
NSCompoundPredicate.h           NSPersonNameComponents.h
NSData.h                NSPersonNameComponentsFormatter.h
NSDate.h                NSPointerArray.h
NSDateComponentsFormatter.h     NSPointerFunctions.h
NSDateFormatter.h           NSPort.h
NSDateInterval.h            NSPredicate.h
NSDateIntervalFormatter.h       NSProcessInfo.h
NSDecimal.h             NSProgress.h
NSDecimalNumber.h           NSPropertyList.h
NSDictionary.h              NSProxy.h
NSEnergyFormatter.h         NSRange.h
NSEnumerator.h              NSRegularExpression.h
NSError.h               NSRunLoop.h
NSException.h               NSScanner.h
NSExpression.h              NSSet.h
NSExtensionContext.h            NSSortDescriptor.h
NSExtensionItem.h           NSStream.h
NSExtensionRequestHandling.h        NSString.h
NSFileCoordinator.h         NSTextCheckingResult.h
NSFileHandle.h              NSThread.h
NSFileManager.h             NSTimeZone.h
NSFilePresenter.h           NSTimer.h
NSFileVersion.h             NSURL.h
NSFileWrapper.h             NSURLAuthenticationChallenge.h
NSFormatter.h               NSURLCache.h
NSHTTPCookie.h              NSURLConnection.h
NSHTTPCookieStorage.h           NSURLCredential.h
NSHashTable.h               NSURLCredentialStorage.h
NSISO8601DateFormatter.h        NSURLError.h
NSIndexPath.h               NSURLProtectionSpace.h
NSIndexSet.h                NSURLProtocol.h
NSInvocation.h              NSURLRequest.h
NSItemProvider.h            NSURLResponse.h
NSItemProviderReadingWriting.h      NSURLSession.h
NSJSONSerialization.h           NSUUID.h
NSKeyValueCoding.h          NSUbiquitousKeyValueStore.h
NSKeyValueObserving.h           NSUndoManager.h
NSKeyedArchiver.h           NSUnit.h
NSLengthFormatter.h         NSUserActivity.h
NSLinguisticTagger.h            NSUserDefaults.h
NSLocale.h              NSValue.h
NSLock.h                NSValueTransformer.h
NSMapTable.h                NSXMLParser.h
NSMassFormatter.h           NSXPCConnection.h
NSMeasurement.h             NSZone.h
中文名: Objective-C基础教程 作者: Mark Dalrymple Scott Knaster译者: 高朝勤 杨越 刘霞图书 分类: 软件 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社 书号: ISBN: 9787115208774 发行时间: 2009年08月 地区: 大陆 语言: 简体中文 简介: 内容简介 Objective-C是扩展C的面向对象编程语言,也是iPhone开发用到的主要语言。本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。附录中还介绍了如何从其他语言过渡到Objective-C。   本书适合各类开发人员阅读。 内容截图 目录: 第1章 启程.1 1.1 预备知识1 1.2 历史背景1 1.3 内容简介2 1.4 小结3 第2章 对C的扩展4 2.1 最简单的Objective-C程序4 2.2 解构HelloObjective-C程序7 2.2.1 #import7 2.2.2 NSLog()和@"字符串"8 2.3 布尔类型10 2.3.1 BOOL强大的实用功能11 2.3.2 比较13 2.4 小结14 第3章 面向对象编程基础知识15 3.1 间接15 3.1.1 变量与间接16 3.1.2 使用文件名的间接18 3.2 在面向对象的编程中使用间接24 3.2.1 过程式编程24 3.2.2 实现面向对象编程29 3.3 学习有关的术语33 3.4 Objective-C中的OOP34 3.4.1 @interface部分34 3.4.2 @implementation部分38 3.4.3 实例化对象40 3.4.4 扩展Shapes-Object41 3.5 小结43 第4章 继承45 4.1 为何使用继承45 4.2 继承语法48 4.3 继承的工作机制51 4.3.1 方法调度51 4.3.2 实例变量53 4.4 重写方法55 4.5 小结57 第5章 复合58 5.1 什么是复合58 5.1.1 Car程序58 5.1.2 自定义NSLog()59 5.2 存取方法62 5.2.1 设置发动机的属性64 5.2.2 设置轮胎的属性64 5.2.3 跟踪汽车的变化66 5.3 扩展CarParts程序67 5.4 复合还是继承68 5.5 小结69 第6章 源文件组织70 6.1 拆分接口和实现部分70 6.2 拆分Car程序73 6.3 使用跨文件依赖关系75 6.3.1 重新编译须知75 6.3.2 让汽车开动77 6.3.3 导入和继承79 6.4 小结80 第7章 深入了解Xcode82
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值