GVKun编程网logo

objective-c – 在Cocoa中,main.m类的目的是什么?(main.c*)

25

本篇文章给大家谈谈objective-c–在Cocoa中,main.m类的目的是什么?,以及main.c*的知识点,同时本文还将给你拓展collections.ChainMap的目的是什么?、Groo

本篇文章给大家谈谈objective-c – 在Cocoa中,main.m类的目的是什么?,以及main.c*的知识点,同时本文还将给你拓展collections.ChainMap的目的是什么?、Groovy中NullObject类的目的是什么?、objective-c – .NET程序员学习Objective C和Cocoa有多难?、objective-c – Cocoa App帮助手册的目录(边栏)等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

objective-c – 在Cocoa中,main.m类的目的是什么?(main.c*)

objective-c – 在Cocoa中,main.m类的目的是什么?(main.c*)

它只是坐在那里……我如何独立于UI动作运行代码(如同,不仅仅是响应按钮按下)?我正在尝试初始化一些对象并在唤醒.FromNib之前运行一些脚本.我该怎么做呢?

解决方法

In Cocoa,what is the purpose of the main.m class?

没有,因为没有一个.

首先,.m文件不是类.也不是.h.将类的@interface放在.h(头文件)文件中并将其@implementation放在.m(实现)文件中的做法是一种约定,仅此而已.这是一个很好的约定,但它没有被语言强制执行.

因此,.m文件包含零个或多个类实现.通常,它只是一个.有时它是两个,另一个是一个小的私有类,其@interface也在同一个文件中.

main.m不包含任何类.它通常只包含一个名为main的函数.

main来自C(其中Objective-C是超集),并且是程序的入口点:它是程序开始运行的地方.一切都发生在这里,或者在这里调用的函数中.命令行工具通常也会通过主返回退出.

Cocoa应用程序中的大多数主要功能都是项目模板附带的默认功能;这个实现只是尾部调用NSApplicationMain,它设置共享的NSApplication对象并启动它运行.那个功能永远不会回来当用户退出Cocoa应用程序时,该过程就会退出.

您可能想要阅读我写的this list of important facts about Cocoa and Objective-C.听起来你有一些误解(可能是从你更熟悉的另一个框架中带来的),这个列表可以为你清理.

How do I run code independently of UI actions (as in,not only in response to a button push)?

这取决于你何时尝试这样做.例如,定期行动将是timer的工作.

I’m trying to initialize some objects and run some scripts BEFORE i awakeFromNib. How do I do this?

您可以在initWithCoder:中执行此操作,该文件将发送到从存档(包括您的存档)实例化的每个非视图层对象.笔尖也是档案馆.

您可能还会考虑成为应用程序委托并实施a applicationWillFinishLaunching: method.

第三种方法是将代码填入main.请注意,除非您将其包装在@autoreleasepool语句中,否则此处几乎所有Cocoa代码都可能会记录“no autorelease pool”警告;其他解决方案没有此问题,因为NSApplication已经为您创建了自动释放池.

collections.ChainMap的目的是什么?

collections.ChainMap的目的是什么?

在Python
3.3中ChainMap,向该collections模块添加了一个类:

提供ChainChain类,用于快速链接许多映射,因此可以将它们视为一个单元。它通常比创建新字典并运行多个update()调用要快得多。

例:

>>> from collections import ChainMap
>>> x = {'a': 1,'b': 2}
>>> y = {'b': 10,'c': 11}
>>> z = ChainMap(y,x)
>>> for k,v in z.items():
        print(k,v)
a 1
c 11
b 10

它是由动机这个问题,并予以公布的这一个(没有PEP创建)。

据我了解,它是拥有额外字典并使用update()s进行维护的替代方法。

问题是:

  • ChainMap涵盖了哪些用例?
  • 有现实世界的例子ChainMap吗?
  • 是否在切换到python3的第三方库中使用?

额外的问题:是否可以在Python2.x上使用它?


我在Transforming Code into Beautiful,Idiomatic PythonRaymond
Hettinger的PyCon演讲中已经听说过,我想将其添加到我的工具箱中,但是我不知道何时应该使用它。

Groovy中NullObject类的目的是什么?

Groovy中NullObject类的目的是什么?

我一直在使用Groovy五个小时,刚刚遇到了 Groovy NullObject.我读了Groovy explanation of the Null Object Pattern,但它没有直接触及NullObject类; NullObject只是为了像NullTree和NullJob这样的东西?我在一些需要String的代码中得到一个NullObject,并且它导致失败,就像“常规”null一样.

那么,NullObject的目的是什么?或者,换句话说,NullObject提供的“常规”null不具有什么价值?

解决方法

其目的是使用null对象而不是null关键字.

在普通的Java中,null是一个特殊的关键字,它用于表示引用没有附加到任何对象..这样可以正常工作,但它不会处理您尝试使用空引用执行某些操作的情况.

由于null引用不是对象,因此您无法对其执行任何操作,Java将抛出NullPointerException.相反,如果你有一个NullObject,你的引用将指向这一个而不是什么…当然这个NullObject无法做任何事情,当你试图调用一个方法时,什么都不会发生但是没有异常将被抛出,因为通过NullObject意味着“没有任何对象”它被实现为一个具有明显结果的对象,以避免这些情况.

那么groovy可以处理像object这样的东西?.methodName().如果object为null,则groovy将使用NullObject,以便此隐式检查将执行类似的操作(可能这不是实际的实现,只是为了给您提示)

if (object instanceof NullObject)
  return new NullObject();
else
  return object.someMethod();

总之,需要克服在Java中使用空引用将始终导致NullPointerException的事实.

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 App帮助手册的目录(边栏)

objective-c – Cocoa App帮助手册的目录(边栏)

我正在为我的应用程序构建帮助手册,主要使用苹果的文档 here,但它看起来有点过时了.在Yosemite OS X 10.10中,apple自己的应用程序有一个可折叠的侧栏,显示帮助包的目录

 

虽然,侧栏按钮出现在我自己的应用程序上,我不知道如何访问它.有谁知道如何访问这个侧边栏?并为我们自己的应用程序提供内容?

解决方法

我刚刚遇到了同样的问题,我不得不在Apple Mail的帮助文件中挖掘它们以找出它们正在使用的内容.基本上他们已经在HTML / CSS中构建了侧边栏,并且它不是帮助查看器的一部分.

要在帮助查看器中启用“目录”按钮,您需要使用javascript函数:

window.HelpViewer.showTOCButton(bool,function,function);

有关更明确的示例,以下代码段将启用Apple帮助查看器中的“目录”按钮,并将其链接到函数“toggleNavigation”.

if ("HelpViewer" in window && "showTOCButton" in window.HelpViewer) {

    window.setTimeout(function () {
        window.HelpViewer.showTOCButton(true,toggleNavigation,toggleNavigation);
        window.HelpViewer.setTOCButton(true);
    },100);
}

toggleNavigation函数将包含打开侧边栏的代码.

function toggleNavigation() {
    // YOUR CODE HERE
}

我发现使用window.onload似乎不起作用,但设置超时100毫秒.在Mail中,Apple根据示例使用等效的“toggleNavigation”函数作为两个函数参数.按下“目录”按钮时会调用第三个参数,但我没有弄清楚第二个参数是什么.

关于objective-c – 在Cocoa中,main.m类的目的是什么?main.c*的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于collections.ChainMap的目的是什么?、Groovy中NullObject类的目的是什么?、objective-c – .NET程序员学习Objective C和Cocoa有多难?、objective-c – Cocoa App帮助手册的目录(边栏)等相关知识的信息别忘了在本站进行查找喔。

本文标签: