IOS编程第四版第二章:Objective-C
来源:互联网 发布:开微店好还是淘宝店好 编辑:程序博客网 时间:2024/06/05 03:56
本章通过一个由浅入深的例子,简洁地介绍了Objective-c的类和初始化
涉及知识点:
1. 用for(xxxx in xxx) 快速迭代的方法需要注意:不能使用它去在集合中增加或删除Objects。如果需要这样做,要使用普通for循环
2. %@必须对应一个对象,这是因为每个对象都有一个desciption方法。
3. 类方法通常用来创建一个类的新的实例或者访问一些类的全局属性。 类方法不操作对象,也不能访问实例变量。
4. 关于初始化方法的简单规则
- 一个类继承所有父类的初始化方法并且可以有任意多个自己的初始化方法
- 每个类制定一个初始化方法为指定的初始化方法。
- 这个指定初始化方法必须在其内部最开始的地方先调用其父类的指定初始化方法
- 这个类其他的初始化方法都调用这个指定的初始化方法
- 如果这个类的指定初始化方法跟父类的指定初始化方法不同,则必须重写父类的指定初始化方法。
指定初始化方法通常是那个初始化最多实例变量的那个初始化方法。
5. 注意头文件中声明的顺序
先是实例变量,然后是类方法,初始化方法,实例方法。 这种顺序让头文件更加好读。
6. NSArray可以包含不同类型的对象。
但是它不能包含基本类型和c 结构类型的数据,如果非要这么做,需要类型转换成NSNumber, NSValue和NSData.
不能使用nil作为数组元素插入数组。要使用[items addObject:[NSNull null]];
数组可以使用短操作符代替长消息来访问数组内的元素
如:NSString *foo = item[0] is equuivalent to NSString *foo = [item objectAtIndex: 0];
它也同样适用与可变数组。
本章实现代码如下:
Item.h
#import <Foundation/Foundation.h>@interface Item : NSObject{ NSString *_itemName; NSString *_serialNumber; int _valueInDollars; NSDate *_dateCreated;}+ (instancetype)randomItem;// Designated initializer for BNRItem- (instancetype)initWithItemName:(NSString *)name valueInDollars:(int)value serialNumber:(NSString *)sNumber;- (instancetype)initWithItemName:(NSString *)name;- (void)setItemName:(NSString *)str;- (NSString *)itemName;- (void)setSerialNumber:(NSString *)str;- (NSString *)serialNumber;- (void)setValueInDollars: (int)v;- (int)valueInDollars;- (NSDate *)dateCreated;@end
Item.m
//// Item.m// RandomItems//// Created by zhengnan on 15/6/27.// Copyright (c) 2015年 zhengnan. All rights reserved.//#import "Item.h"@implementation Item+ (instancetype)randomItem{ NSArray *randomAdjectiveList = @[@"Fluffy", @"Rusty", @"Shiny"]; NSArray *randomNounList = @[@"Bear", @"Spork", @"Mac"]; NSInteger adjectiveIndex = arc4random() % randomAdjectiveList.count; NSInteger nounIndex = arc4random() % randomNounList.count; NSString *randomName = [NSString stringWithFormat:@"%@ %@", randomAdjectiveList[adjectiveIndex], randomNounList[nounIndex]]; int randomValue = arc4random() % 100; NSString *randomSerialNumber = [NSString stringWithFormat:@"%c%c%c%c%c", '0' + arc4random() % 10, 'A' + arc4random() % 26, '0' + arc4random() % 10, 'A' + arc4random() % 26, '0' + arc4random() % 10]; Item *newItem = [[self alloc] initWithItemName:randomName valueInDollars:randomValue serialNumber:randomSerialNumber]; return newItem;}- (instancetype)initWithItemName:(NSString *)name valueInDollars:(int)value serialNumber:(NSString *)sNumber{ self = [super init]; if(self){ _itemName = name; _serialNumber = sNumber; _valueInDollars = value; _dateCreated = [[NSDate alloc] init]; } return self;}- (instancetype)initWithItemName:(NSString *)name{ return [self initWithItemName:name valueInDollars:0 serialNumber:@""];}- (instancetype)init{ return [self initWithItemName:@"Item"];}- (void)setItemName:(NSString *)str{ _itemName = str;}- (NSString *)itemName{ return _itemName;}- (void)setSerialNumber:(NSString *)str{ _serialNumber = str;}- (NSString *)serialNumber{ return _serialNumber;}- (void)setValueInDollars:(int)v{ _valueInDollars = v;}- (int)valueInDollars{ return _valueInDollars;}- (NSDate *)dateCreated{ return _dateCreated;}- (NSString *)description{ NSString *descriptionString = [[NSString alloc] initWithFormat:@"%@ (%@): Worth $%d, recored on %@", self.itemName, self.serialNumber, self.valueInDollars, self.dateCreated]; return descriptionString;}@end
main.m测试文件
//// main.m// RandomItems//// Created by zhengnan on 15/6/27.// Copyright (c) 2015年 zhengnan. All rights reserved.//#import <Foundation/Foundation.h>#import "Item.h"int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableArray *items = [[NSMutableArray alloc] init]; for (int i = 0; i < 10; i++) { Item *item = [Item randomItem]; [items addObject:item]; } for (Item *item in items) { NSLog(@"%@", item); } //Destroy the mutable array object items = nil; } return 0;}
源码地址:https://github.com/ianzhengnan/RandomItem
0 0
- IOS编程第四版第二章:Objective-C
- IOS编程第四版第二章---Managing Memory with ARC
- objective-c学习笔记第四章《objective-c 类(第二部分)与java中的区别》
- objective-c 编程总结(第四…
- Objective-C 程序设计 第四章
- 《Objective-C编程全解》 读书笔记 第二章
- 《Objective-C高级编程 iOS与OS X多线程和内存管理》学习笔记——第二章Blocks
- [iOS] Objective C 编程规范
- [iOS]Objective-C编程规范
- Effective Objective-C 第二章
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式
- iOS编程第四版第六章---UIViewController
- Objective-C学习笔记第四章继承
- objective-c第四章课后练习答案
- 《Objective-C基础教程》第四章 继承
- 《Effective Objective-C 2.0》读书笔记---第四章
- 《Objective-C编程全解》 读书笔记 第四章 对象的类型和动态绑定
- java编程思想第四版第二章学习笔记
- 半年沉淀,开始。
- 认识自己——恐惧的奴隶6:老师
- IOS 开发,调用打电话,发短信,打开网址
- Unique Paths II
- JAVA基础第七天
- IOS编程第四版第二章:Objective-C
- LeetCode | Contains Duplicate III
- 浅谈 MVP in Android
- __LINE__ __FILE__的用法
- windows下ACtiveMQ服务器搭建
- Unique Paths
- UVA_2533 Chess Queen(math)
- C与C++在opencv中的区别
- oracle 导出表结构