《斯坦福大学公开课:iPhone开发教程2010年冬》笔记
链接:
http://v.163.com/special/opencourse/iphonekaifa.html
一、斯坦福大学公开课:iPhone开发教程2010年冬> 基础入门
http://v.163.com/movie/2010/6/C/7/M6RU83DCT_M6RU957C7.html
1. 课程的链接:http://www.stanford.edu/class/cs193p/cgi-bin/drupal/
2. (25:28)证书的超时时间是这样用的:防止课程过后再使用该证书,但可以在课程期间卖出去赚钱。
3.(27:18)iPhone OS核心架构(最上层是Cocoa Touch)
4.(41:10)Interface Builder自动生成控制器代码
二、斯坦福大学公开课:iPhone开发教程2010年冬> 2.各种基础的类,功能,对象和实例的介绍
http://v.163.com/movie/2010/6/N/D/M6RU83DCT_M6RU962ND.html
1. (11:23)OOP三术语。
2. (19:12)新增类型:匿名对象(匿名函数?id?),类(class),选择器(SEL)。
3. (20:10)没有分配在栈的对象(只分配在堆上)。
4. (45:49)self在类方法中指向类对象。
5. (46:41)选择器相当于C++函数被编译后带类型参数信息的方法名(不同的是ObjC不关心参数类型而关心参数名)。
6. -isEqual:
7. (52:20)-description:(用于%@格式化)
8. (54:00)变长参数是例外,后面可以带逗号,不带名称。
9. (59:13)常量NSString字符串不需要释放。
10. (59:44)NSString *log = [NSString stringWithFormat:@"It's %@", aString];
11. NSString -isEqualToString:,-hasPrefix:, -intValue,-doubleValue
12. NSMutableString +string, -appendString:, -appendFormat:
13. (1:06:59)所有集合类(数组,字典,集合)都有两个版本(immutable和mutable)
14. NSArray +arrayWithObjects:(必须以nil结束,不能直接放入原始类型的值,除非封装成NSNumber),-count,-objectAtIndex:,-indexOfObject:(找不到时返回NSNotFound而非nil)
15. NSMutableArray +array, -addObject:, -removeObject:, -removeAllObjects, -insertObject:atIndex:
16. NSDictionary +dictionaryWithObjectsAndKeys:, -count,-objectForKey:(找不到时返回nil)
17. NSMutableDictionary(子类)+dictionary, -setObject, -removeObjectFor:, removeAllObjects
18. NSSet +setViewObjects:(必须以nil结束), -count, -containsObject:
19. NSMutalbeSet +set, -addObject:, -removeObject:, -removeAllObject, -intersectSet:, -minusSet:,
20. 用for(in)遍历可以避免不小心修改集合对象。
21. NSNumber +numberWithInt:, +numberWithDouble:, -intVaule, -doubleValue
22. 工厂方法生成的对象会自动释放,如NSString的+stringWithFormat
三、斯坦福大学公开课:iPhone开发教程2010年冬> 3.如何创建你自己的定制类
http://v.163.com/movie/2010/6/3/I/M6RU83DCT_M6RU96B3I.html
1. 移除build目录
2. #import避免多次包含,所以不要用#include
3. 用self和super表示调用自身的方法实现和超类方法实现
4. (16:49)实现自己的init:
-(id)init{
if (self = [super init]) { //确保self非空(可能是内存分配错误导致nil)才初始化
age = 0;
name = @"Bob";
}
return self;
}
init只是改变内容而非分配内存。
5. (22:04)alloc和dealloc(相当于C的malloc和free)dealloc像free那样不可以反复调用,但它从不显式、直接地调用(除非在引用计数减到0时)。一般用-retain(引用数加一)和-release(引用数减一)。+alloc(引用数设置为1)
6. (26:50)实现自己的dealloc:
-(void)dealloc {
//...
[super dealloc];
}
7. 对象所有权
* retain情况下的setter,需要考虑引用计数问题。
-(void)setName:(NSString)newName {
if(name != newName) { //需要判断,否则调用dealloc后无法再retain了
[name release];
name = [newName retain]; //最初拥有者不是我
//...
}
}
* copy情况下的setter
-(void)setName:(NSString)newName {
if(name != newName) {
[name release];
name = [newName copy]; //最初拥有者是我
}
}
8. 释放ivar
-(void)dealloc {
[name release]; //不管用copy还是非copy,引用计数都要减一。
[super dealloc];
}
9. (38:09)返回创建的对象
(NSString *)fullName {
NSString *result;
result = [[NSString alloc] initWithFormat:@"%@ %@", firstName, lastName];
[result autorelease]
return result;
}
* 凡是带aloc,copy或new的方法返回的对象都需要调用release。
* 其它方法则返回autorelease对象。
10. UIkit会在每次事件循环都自动排干Autorelease池。
但Foundation需要手动drain。
可以通过retain来让autorelease的对象维持久些(?)
autorelease不是垃圾回收。
11. 属性(Objective-C 2.0新增,新API广泛采用,如UIKit)
//.h
@property int age; //可读写
@property (copy) NSString *name; //只用于对象属性:assign(指针赋值),retain(保持),copy(赋值)
@property (readonly) BOOL canLegallyVote;
//.m
@synthesize age;
@synthesize name;
-(BOOL)canLegallyVote {
return (age > 17);
}
//转换为实例变量
@synthesize age = numberOfYearOld; //numberOfYearOld是实例变量,age是属性
//混合synthesize和implement
@synthesize age;
//显式实现setter,而getter仍然可以被synthesize。
-(void)setAge:(int)value {
age = value;
// do something;
}
//点语法
//如果在setter内使用点语法可能会出现死循环
-(void)doSomething {
name = @"Fred"; //直接访问ivar
self.name = @"Fred"; //访问setter
}
10. (59:05)[NSNull null]可以放入数组中,但nil不可以放入数组
11.(1:05:07)autorelease的对象([NSMutalbeString stringWithString:@"Hello"])的retain/release要平衡,不要多余地release,否则会有问题(当运行到事件退出池排干时,日志中报错)。
分享到:
相关推荐
《斯坦福大学公开课:机器学习课程》是由著名计算机科学家吴恩达(Andrew Ng)主讲的一门经典课程,深入浅出地介绍了机器学习的基础理论、算法及应用。本课程不仅涵盖了机器学习的基本概念,还涉及到了深度学习的前沿...
资源名称:斯坦福大学公开课:编程方法学(28集)资源目录:【】1.课程简介【】10.私有变量的重要性【】11.Gimage类【】12.枚举【】13.对字符串的处理【】14.内存【】15.指针要点回顾【】16.数组【】17.多维数组【】...
资源名称:斯坦福大学公开课:编程范式视频课程(27集含笔记)资源目录:【】斯坦福大学公开课编程范式笔记【】编程范式1【】编程范式10【】编程范式11【】编程范式12【】编程范式13【】编程范式14【】编程范式15...
在本节斯坦福大学的公开课中,我们聚焦于iOS7应用程序开发的第五讲,主题是Attributor源码的解析与实践。这是一堂深入探讨iOS应用编程的课程,特别是针对苹果操作系统的新特性进行的讲解。iOS7是苹果公司在2013年...
斯坦福大学提供的这门开放课程《iOS开发教程》2010年秋季版第13讲,主要讲解了iOS应用开发中的一个关键概念——**Blocks(代码块)**以及它们在多线程编程中的应用。本讲通过深入浅出的方式介绍了Blocks的基础语法...
斯坦福大学公开课:iOS 7应用开发 本课程共18集 翻译完 欢迎学习 课程介绍 最新更新课程,适用于iOS7。本课程介绍了使用Xcode5建造iPhone平台上的应用程序所需的工具和应用程序接口;使用多点触控技术,为手机等终端...
教程名称: 斯坦福大学公开课:用网页技术开发手机应用【】用网页技术开发手机应用01:移动的网络版本【视频】【】用网页技术开发手机应用02:网络技巧 - 网络技术和HTML5简介【】用网页技术开发手机应用03:移动...
【标题】"斯坦福大学公开课:iOS 7应用开发 中英文字幕)1 18全"涵盖了iOS应用开发的基础知识,特别强调了是针对iOS 7系统的学习资源,这表明课程内容可能包括该版本引入的新特性、设计原则以及开发工具的使用。...
资源名称:斯坦福大学公开课:人与计算机的互动视频课程(10集)资源截图:【】[第10集]拟人化界面的不足【】[第1集]互动设计、视觉设计和工业设计结合【】[第2集]原型如何影响设计结果【】[第3集]关于Twitter【】...
资源名称:斯坦福公开课—抽象编程视频讲解资源目录:【】斯坦福大学公开课:抽象编程(1)【】斯坦福大学公开课:抽象编程(2)【】斯坦福大学公开课:抽象编程(3)【】斯坦福大学公开课:抽象编程(4)【】斯坦福大学公开...
斯坦福大学公开课 :机器学习课程课件_Andrew Ng
斯坦福大学公开课:iOS 7应用开发 全套课件课后作业 加全套优化字幕 ,文件太大分两个压缩包,另一个见ios7 all_in_one_2,字幕可以直接加载,mac os 在mplayer里面可以直接切换字幕
资源名称:斯坦福大学2010年冬iPhone开发视频教程(28集)资源目录:【】斯坦福大学iPhone开发教程2010年冬-Bump【】斯坦福大学iPhone开发教程2010年冬-Designing for the iPad【】斯坦福大学iPhone开发教程2010年冬-...
斯坦福大学公开课 :机器学习课程>>全部讲义PPT,以及课程作业,课程信息等
斯坦福大学公开课《iPad和iPhone应用开发(iOS5)》.part2 PDF+CODE
这个压缩包文件“IOS应用源码——斯坦福大学公开课:iOS程序开发教程(PPT+代码).zip”包含了一系列关于iOS应用程序开发的教育资源,主要来源于斯坦福大学的公开课。以下是其中涉及的一些关键知识点: 1. **MVC...
斯坦福大学公开课:IOS7应用开发课件PPT developing-ios-7-apps-for standford ios7
斯坦福大学公开课:iOS 7 课件 打包, 分两部分,这是第一个
### 斯坦福大学开放课程:iOS开发教程2010年秋(Lecture 12) #### 课程概述 在本课程中,我们探讨了如何使用Core Data进行iOS应用程序开发,尤其是在苹果设备如iPhone 4、iPod Touch及iPad上的应用开发。Core Data...