重读前言提到的学习方法:
设定目标一天一章,找一个安静地场所,关闭手机和电脑各种聊天和通知,读书无法多任务并行,必须集中精力。
通读整章
编写代码和调试(特别有帮助)
笔记
最终目标:
必须学会 Objective-C
必须掌握 Cocoa 的常用技术:视图、控制器、内存管理、代理
必须掌握框架和学会查看官方文档
The 4 Most Important Skills for a Software Developer : If you can solve problems, learn things quickly, name things well and deal with people, you will have a much greater level of success in the long run than you will in specializing in any particular technology.
上面这篇文章中提到解决问题的能力很重要,因为真实的编程工作内容就是解决问题,所以习题很重要,做习题就是解决问题,这也和本书提到调试非常有帮助不谋而合,因为你在调试就是在解决问题。
发现我一直在寻求简单的道理(大道至简),习惯于归纳要旨和大纲。但是却忽略了细节,其实全局的理解和记忆也是必经之路。读书先薄再厚再薄,第二阶段最为繁长的耗时,但也是最重要的。
7.2 委托 Delegation 翻译为委托/代理
代理的前三步:
视图中创建一个代理协议
视图中创建一个代理的属性,其类型是代理协议
视图中使用代理的属性
代理的后三步:
控制器声明并完成代理协议
控制器把自己作为视图的代理,通过设置代理的属性
控制器实施代理的方法
7.8 中级练习:捏合-缩放 习题提示部分大不大懂。对比了英文版,翻译的不对啊。看中文翻译有出入,看英文太慢。解决方法:还是看中文版,Demo 和习题都做完了,再看一遍英文版。先精通一门语言的再说,以后学其他的就容易了。
谁让开发语言和大部分开发者都用英文呢,其实我现阶段看简单 Stack Overflow 和 Apple Document 都没有问题了,毕竟英文单词不多,也都是简单的词。希望以后能够直接看英文教材。
又是看了 BNR 论坛答案: http://forums.bignerdranch.com/viewtopic.php?f=488&t=9983
是我想复杂了,这里只是一个框架内置的协议,所以只要在AppDelegate.m
完成后三步就行了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #import "AppDelegate.h" #import "GWHypnosisView.h" @interface AppDelegate () <UIScrollViewDelegate > // ①@property (nonatomic ) GWHypnosisView *scrollHypnosisView; @end @implementation AppDelegate - (BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self .window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; CGRect screenRect = self .window.bounds; CGRect bigRect = screenRect; bigRect.size.width *= 2.0 ; bigRect.size.height *= 2.0 ; UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:screenRect]; scrollView.pagingEnabled = NO ; scrollView.minimumZoomScale = 0.5 ; scrollView.maximumZoomScale = 6.0 ; scrollView.contentSize = CGSizeMake (1280 , 960 ); scrollView.delegate = self ; [self .window addSubview:scrollView]; self .scrollHypnosisView = [[GWHypnosisView alloc] initWithFrame:bigRect]; [scrollView addSubview:self .scrollHypnosisView]; scrollView.contentSize = bigRect.size; self .window.backgroundColor = [UIColor whiteColor]; [self .window makeKeyAndVisible]; return YES ; } -(UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView { return self .scrollHypnosisView; }