2011-03-16 39 views
1

我是新的mac dev,xcode和IB等。我明白如何构建简单的应用程序和基本拖动IB在下降,但我不知道IB在什么地方做对象。当我连接IBoutlets/IBActions时,IB在幕后做了什么?

第二个问题是如何在不使用IB的情况下编写MVC?

+0

嗨!我有2年使用iPhone应用程序的经验。我们放弃使用接口构建器,因为当你构建更大的解决方案时,它只会使事情复杂化。编写代码,你将完全控制;)你可以在这里了解更多关于mvc的信息http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html – 2011-03-16 19:45:52

回答

0

据我所知,来自IB的XIB文件是某种存档的对象及其属性存储在其中的某种存档。当您发送-initWithNibName时,对象将被取消存档。所以基本上,你可以 - 如果你知道如何 - 创建你自己的XIB文件,他们应该工作。请注意,加载UIViewController而不指定XIB文件,将加载与您的类同名的XIB文件。请参阅Wikipedia article

第二个问题:您可以创建任何使用IB以编程方式添加的对象。通常,这些是使用initWithFrame:初始化的UIView子类。然后你设置你需要的属性。最后,使用addSubview将它们添加到您的视图中。 IBActions基本上是Target/Action Pairs。如果您例如添加UIBarButtonItem,则使用initWithBarButtonSystemItem:target:action:。设置动作等同于在IB中设置IBAction连接。

您应该可以通过编程方式创建任何用户界面,但与使用IB时相比,这通常需要很多工作。

2

当您使用IBOutletIBAction连接IB中的两个对象时,它在XIB(即XML)中创建了一些特殊标记。

当束(更新:对不起,这不是一个包,但UINib)读取NIB(这是编译XIB),它看起来对这样的标签,他们是参考对象。之后:

  • 对于网点,它使用KVC(键值编码)来设置接收对象的相应属性。

  • 对于控制对象调用addTarget:action:forControlEvents:的操作。

您可以通过创建并在代码中设置对象建立任何复杂的iPhone应用程序,而不IB,但在大多数情况下,它只是并不明智。

深入阅读 - Resource Programming Guide