美文网首页
苹果开发之Cocoa编程(第四版) 第2章 起步

苹果开发之Cocoa编程(第四版) 第2章 起步

作者: zchongr | 来源:发表于2015-07-12 23:30 被阅读315次

从今天开始学习OS X编程,《苹果开发之Cocoa编程》(第四版)第2章 起步的例程就把我难住了。快速的看完一遍不难理解,跟MFC很像。可是动起手来比着做的时候,发现问题挺多的。主要是这本书的XCode版本比较老,当在XCode 6.4上做的时候,很多内容已经不一样了。搞了两个小时,终于把问题都解决了,备忘一下。

项目的创建向导少有差别,不过问题不大,一路回车完成即可。但项目的基本框架和书里的已经不一样了。书中由向导生成的主要文件有三个:RandomAppDelegate.h, RandomAppDelegate.m和MainMenu.xib。在XCode6.4中则有五个,如下:

项目的基本框架

在2.2.5节中要创建一个RandomController类,并添加NSTextField类型的成员变量textField,问题就出在了这里,因为我添加完了之后编译出了一个错误,说NSTextField是无法识别的数据类型。我在这里卡了很久,我从cocoa.framework中能找到NSTextField的定义,我猜测可能是因为include path设置的问题,可是书里面完全没提要修改include path呀,我怀疑在前面的#import写错了,可是下了原书的源代码,发现人家就是这么写的。我去书的论坛上找了一下,发现有人也遇到了这个问题,解决的办法是修改#import<Foundation/Foundation.h>为#import <AppKit/AppKit.h>。

先不忙跟着改,再看看原书中RandomController的作用是什么?貌似是程序主界面,这不就是XCode向导生成的ViewController的作用么?也就是说新版XCode生成的代码框架应该是做了更好的封装,把视图类也帮你生成出来了,因此应该就不需要再创建这个RandomController类了。是这样吗?我把书中安在RandomController下面的属性和方法写到ViewController类中,发现编译通过了!

这样写逻辑上是否正确还要看把控件和类成员、方法连接以后是否能正常运行。接下来完成绑定操作吧,原书中叫做连接,我连想起了当年学习MFC时叫做绑定的概念,应该都是一回事。新版XCode中这个操作和书上的也不太一样了。

点开Main.storyboard,在ViewContro顶部的蓝色按钮处右键,弹出如下菜单:

设置textField的outlet 1

鼠标挪到textField右侧的圆圈中,圆圈变为加号,把加号拖到Label控件上,如下图所示,完成ViewController的成员变量textField和Label控件的绑定:

设置textField的outlet 2

同样的方法,把Received Action中的generate和seed绑定到两个按钮上:

设置seed和generate按钮的Action

接下来就可以在ViewController.m中完成seed和generate两个成员函数的编写。完成后运行,发现结果符合预期!这说明之前的猜测是正确的:新版XCode帮你完成了RandomController类的生成,只需要在这个类中填写新控件和响应函数即可!

相关文章

网友评论

      本文标题:苹果开发之Cocoa编程(第四版) 第2章 起步

      本文链接:https://www.haomeiwen.com/subject/qpeuqttx.html