GVKun编程网logo

objective-c – 经验丰富的Cocoa程序员多少依赖Interface Builder来连接他们的应用程序?

21

此处将为大家介绍关于objective-c–经验丰富的Cocoa程序员多少依赖InterfaceBuilder来连接他们的应用程序?的详细内容,此外,我们还将为您介绍关于IPHONE开发基础概念--C

此处将为大家介绍关于objective-c – 经验丰富的Cocoa程序员多少依赖Interface Builder来连接他们的应用程序?的详细内容,此外,我们还将为您介绍关于IPHONE开发基础概念--Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念、objective-c – (Cocoa)在单个窗口可可应用程序中,UIViewController子类是什么?、objective-c – .NET程序员学习Objective C和Cocoa有多难?、objective-c – Cocoa Interface Builder对象初始化的有用信息。

本文目录一览:

objective-c – 经验丰富的Cocoa程序员多少依赖Interface Builder来连接他们的应用程序?

objective-c – 经验丰富的Cocoa程序员多少依赖Interface Builder来连接他们的应用程序?

在IB中,可以实例化控制器,构建对UI元素的引用,以及定义操作目标.也可以以编程方式执行此操作.我想知道(大多数)经验丰富的 Cocoa开发人员更喜欢什么?

在许多其他环境中,我不会花太多时间使用界面构建器(小写),但Apple工具显然是他们自己的一类.他们还有更进一步,或者他们是初学者的工具吗?为什么?

我认为很明显,它们是组装和布局UI的正确选择.但是关联UI元素和控制器对象呢?

解决方法

经验丰富的Cocoa开发人员广泛使用Interface Builder.没有经验的人往往不信任它,因为其他环境的UI构建者通常很糟糕,所以他们假设Interface Builder就是这样.不是. Cocoa和Interface Builder紧密相连.没有使用Interface Builder很难开发应用程序 – 如果你查看Cocoa-Dev邮件列表档案,你会看到许多沮丧的开发人员向Cocoa询问如何避免使用IB. Apple员工和经验丰富的Cocoa开发人员的答案都是一样的:只需使用它.

认为我充满了废话?打开任何专业完成的Cocoa应用程序.说真的 – 任何Apple应用程序,任何第三方Cocoa应用程序.现在转到Resources文件夹.捅了一下,你会看到无处不在的笔尖.

至于IB有多少 – 有一点可以通过代码建立连接.一般来说,连接UI元素和控制器通常在IB中完成,甚至控制器到控制器的连接通常也是如此,尽管这种情况更为明显.它基本上归结为设置和维护的工作量较少.具有讽刺意味的是,IB的主导地位是一个很大的例外.如果您拥有仅使用过一次的自定义视图,则不值得为其创建IBPlugin.在这种情况下,通常控制器连接到IB中的视图,然后控制器将视图连接到它需要的任何其他内容.

IPHONE开发基础概念--Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念

IPHONE开发基础概念--Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念

引用:http://hi.csdn.net/hou_cocoa

Cocoa

是在Mac OS X系统上原生的一个编译环境。他包含两个框架,其实就是一系列的类库,Foundation和AppKit。

在你的iPhone等掌上设备上,使用的则是他的一个子类 - Cocoa Touch 。他所支持的Foundation框架与Cocoa相同,但他的用户图形类库为UIKit,它是为掌上设备特殊设计,提供了你设备上的界面。

Cocoa Touch与Cocoa一个比较鲜明的区别就是Cocoa Touch并不支持垃圾回收机制,这就意味着你必须在你的代码里管理好你的内存。

Foundation

提供了一系列基础数据类型、以及枚举、容器的支持。来自于这个框架的类名以NS开头。

UIKit

iOS上的用户图形包。UI开头的类都来自于这个框架。

于Mac OS X上的用户图形包不同,那上面的图形类来自AppKit,类名以NS开头。

Objective-c

一门iOS和MAC OS X上应用程序开发的语言,同时也是Foundation和UIKit框架所用的变成于洋。

它是C语言的超集,面向对象。

XCode

在MAC OS X上的一个IDE,主要用于代码的编写。

Interface Builder

XCode的一部分,主要用于UI设计。

objective-c – (Cocoa)在单个窗口可可应用程序中,UIViewController子类是什么?

objective-c – (Cocoa)在单个窗口可可应用程序中,UIViewController子类是什么?

在搞笑iOS应用程序之后,我以为我会给可可应用一个旋转,假设事情会非常相似.所以我有一个单独的窗口应用程序与分割视图和一些NSTableViews(认为iTunes),我正在寻找一个地方放置我的代码,将从网络获取数据填补表.

在iOS中,我将把它放在适当的UIViewController子类的viewDidLoad方法中.然后,UITableViewDataSource将访问此数据以填充其单元格.

现在我有一个NSWindow,我可以做一个类似的事情,但如何做一个NSWindowController呢?这甚至是我想要的吗?我可以把它放在AppDelegate中,但似乎不对.

解决方法

iOS和OS X之间的区别是,iOS中只有一个窗口,但OS X中可以有多个窗口.OS X中的NSViewController与UIViewControllers不同,NSViewController用于加载和处理单个视图,而UIViewControllers(对于我相对缺乏iOS知识)似乎处理多个视图,并提供更多的视图之间的粘合.

即使是Apple docs写道:

In Mac OS X,AppKit view controllers are assistants to the window
controller,which is ultimately responsible for everything that goes
in the window.

因此,OS X中的UIViewController的对应者不是NSViewController,而是NSWindowController,它通过管理单个窗口的整体以及视图的布局/内容/交互来为OS X提供了许多UIViewController对iOS的功能.

在你的情况下,我会使用一个NSWindowController – 尽管应用程序很简单,App代表也是如此.如果应用程序非常复杂,那么使用NSViewController来分割代码就不是一个坏主意.

使用NSWindowController的最佳方式是使用[[CustomWindowController alloc] init]在App Delegate中编程加载它,

@implementation CustomWindowController- (id)init{    self=[super initWithWindowNibName:@"CustomWindowNibName"];    if(self)    {        //perform any initializations    }    return self;}@end

或打电话

[[CustomWindowController alloc] initWithWindowNibName:@"CustomWindowNibName"];

直接(并覆盖initWithWindowNibName)如果您希望它可重用.

并且您可以删除MainMenu.xib中的默认窗口.

一般来说,NSWindowController管理一个在其自己的nib文件中实例化的窗口. NSWindowController通常拥有该nib文件. (虽然可以让它管理一个编程方式创建的窗口,但通常不是这样做的)

为了能够使用自定义的NSWindowController,您需要在单独的nib / xib文件中使您的窗口被管理. (使用默认的xib文件意味着您允许Cocoa自动实例化一个NSWindowController,没有机会进行子类化;您不能使用默认的NSMainNibFile定制的NSWindowController.对于一个简单的应用程序,只需将所有控制器代码放在NSApplication / App Delegate中)

至少在Xcode 4中,该过程涉及使用窗口模板和自定义的NSWindowController类创建一个xib,根据这个nib在-init或其中调用[CustomWindowController showWindow:self]实例化CustomWindowController类; (或者如果这不工作,-makeKeyAndOrderFront :)来获取窗口实际显示(in – (void)applicationDid / WillFinishLaunching:(NSNotification *)aNotification可能是一个不错的地方).

要停止默认窗口显示,我只是删除它.可能有更好的方法,但我不知道.

objective-c – .NET程序员学习Objective C和Cocoa有多难?

objective-c – .NET程序员学习Objective C和Cocoa有多难?

我正在尝试为我自己的公司构建双平台应用程序,我试图在晚上开始.

我已完成.NET版本,但尚未完成UI部分.我正在考虑购买一些第三方控件.

但是,如果我购买这些控件,它们显然只适用于我的Windows版本.我想知道我是否应该尝试在GTK中使用UI并使用Mono和CocoaSharp,或者只是用MS技术构建它并自学Mac端?

我真的不熟悉Mac世界,我想知道可能有多少学习曲线.

我想也许用Ruby或Python重写我的核心逻辑.这就是为什么我可以将.NET版本与.NET控件一起使用,并且可能在Mac上挂起相同的代码.

这是一个针对消费者的教育应用程序.因此,安装不需要很多技术复杂性.

解决方法

如果.NET应用程序的非可视部分与UI相比非常大,那么您可以使用完整的.NET并采用以下两步策略:

>非视觉部分

>开发非可视.NET部分,使其成为最独立的平台.
>用于非可视代码的平台相关代码应该在提供相同接口的小类中隔离,以便可以根据平台插入它们.

>用户界面

>对Windows使用System.Windows.Forms(或您最喜欢的工具包)
>对于Mac OS X,请使用Cocoa桥(请参阅this page选项).

您仍然可以从学习Objective-C中受益:由于Cocoa桥通常基于Apple的API,您可以在Apple的示例代码中找到很多帮助(在Objective-C中).

在Windows上,应用程序将与Microsoft .NET运行时一起运行,在Mac OS X上,应用程序将与Mono运行时一起运行.

DeepMeta application采用了这种策略.正如您所看到的,两个平台上的用户体验非常好.

objective-c – Cocoa Interface Builder对象初始化

objective-c – Cocoa Interface Builder对象初始化

基于我所经历的文档和示例代码,我得到的印象是,当在Interface Builder中读取并配置在 xcode中定义的类时,基于该类的对象被有效地创建并存储在xib或nib文件中.因此,在启动相应的应用程序时,可以使用该对象.

或者,对于尚未由Interface Builder处理的类,必须在xcode中显式编写诸如“new”语句之类的代码,以便创建和使用关联的对象.

拥有比我更了解的人来确认或纠正我对Interface Builder的非常天真的理解将是非常好的…

解决方法

你的理解是正确的,但不完整.是的,Interface Builder实例化类并将它们序列化为NIB.但是,这些对象不会自动用于您的代码.

对于要通过Xcode访问的每个IB对象,需要声明一个IBOutlet变量.例:

IBOutlet NSWindow* mainWindow;  // A Reference to your main window

将此代码放在通过Interface Builder实例化的自定义对象的头文件中(将通用对象拖到类列表中,然后在检查器的“标识”选项卡中,将自定义对象设置为类的实例).然后,在Interface Builder中右键单击自定义对象.您应该会在弹出的窗口中看到IBOutlet的条目.从旁边的小圆圈拖动到(在此示例中)主窗口.您现在可以在Xcode中引用IB对象.

通过建立这些连接(使用IBOutlets作为参考,IBAction作为方法),您可以定义应用程序的大部分行为.

我们今天的关于objective-c – 经验丰富的Cocoa程序员多少依赖Interface Builder来连接他们的应用程序?的分享就到这里,谢谢您的阅读,如果想了解更多关于IPHONE开发基础概念--Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念、objective-c – (Cocoa)在单个窗口可可应用程序中,UIViewController子类是什么?、objective-c – .NET程序员学习Objective C和Cocoa有多难?、objective-c – Cocoa Interface Builder对象初始化的相关信息,可以在本站进行搜索。

本文标签: