问题标签 [cocoa-design-patterns]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
112 浏览

iphone - 在使用大量 HTTP 请求的应用程序中使用单例有什么问题?

我有一个单例类,它基本上接口我所有的 HTTP 请求。所以它看起来像这样:

不好吗?为什么人们告诉我单例破坏了模块化?我认为这是实现 http 请求的好方法,因为我需要对 JSON 响应做一些事情,而且我不希望我的视图控制器处理这些事情。

0 投票
1 回答
224 浏览

iphone - 当任务不在 AppDelegate 中时,如何在后台完成任务?

我有一个具有以下层次结构的应用程序:

按下按钮时,用户可能需要等待 1-10 秒(取决于互联网连接)。在任务完成之前,用户可以退出应用程序,当他们返回时,他们应该能够看到下载的内容。

我意识到我必须实现 applicationDidEnterBackground()。我已经阅读了指南,但是我不明白的是,由于数据在另一个视图控制器中,我如何将它传递给应用程序委托?应用程序委托没有完成计算所需的所有数据。此外,如果我已经完成了一半,我如何将它传递给应用程序委托(不会丢失我已完成的工作)?

0 投票
1 回答
177 浏览

ios - 将 UIViewController 设置为另一个 UIViewController 的属性是不是一个坏主意?

例如,假设我有一个RootViewController类和一个AnotherViewController类,并且我需要更改我的RootViewControllerfrom中的一个属性AnotherViewController……在其中有一个“RootViewController”属性是否安全AnotherViewController.h(以便我可以访问它的实例变量)?

如果这不是一个好主意,有人可以解释为什么吗?

在上面的代码中,我知道我可以使用协议/委托来处理同样的事情——我猜我可能应该这样做。然而,我读过的书籍或其他材料都没有真正讨论过这个问题。

我问的原因是我正在使我的应用程序通用,并且使用UISplitViewController我注意到当用户在“详细视图”中进行更改时,我需要经常更新我的“主视图”。所以,我采取了看似简单的方法并开始设置UIViewControllers为属性......但我遇到了一些难以跟踪的内存泄漏和偶尔的崩溃。我读了一些关于“循环引用”的东西,想知道这是否是问题的一部分(我确实有几个地方UIViewControllers被设置为彼此的属性)。

感谢您提供任何见解或指向涵盖此内容的参考材料。

0 投票
2 回答
10211 浏览

iphone - 如何在 iPhone 应用程序中创建日历?

我开发了一个网站应用程序,其中包含一个用于记录会员活动的日历。所以,我需要开发一个 Iphone 应用程序。例如,这个 Iphone 应用程序由 4 个选项卡组成,当单击一个选项卡时,它将显示一个日历,该日历与我开发的那个网站应用程序中的相应日历相同。

因此,有谁知道如何在 Iphone 应用程序中添加或创建日历视图?

非常感谢任何建议和解决方案。谢谢。

0 投票
1 回答
637 浏览

objective-c - 目标c:协议+委托将数据从模式视图中的登录表单传递回标签栏控制器视图

我正在为 iPhone 开发一个基于标签栏的应用程序。流程如下:当应用程序运行时,我抛出带有登录表单的模态视图:

在模式视图 LoginViewController.h (child) 的登录中,我实现了一个协议:

当用户填写表单时,我创建一个 NSURLConnection,并在 connectionDidFinishLoading 方法中从 JSON 请求中获取用户值:

在 HomeViewController.h (父级)中,我得到了委托:

在 HomeViewController.m 中,我实现了 Protocol 方法:

在 viewDidAppear 方法中,我调用 LoginViewController 类中实现的 loginSuccess 方法

LoginViewController 类中实现的 loginSuccess 方法:

它应该将 idJ​​son 值传递给 HomeViewController(父级)。问题是当我关闭模态视图表单时,idJson 值为“NIL”,所以在 HomeViewController 中我无法获取此值。如果我这样做:

我在 HomeViewController(父级)中得到了 hello 字符串我做错了什么?

提前致谢!!!

0 投票
2 回答
441 浏览

cocoa - 是否有标准的、文档化的开发模式来创建类似于 iTunes、iCal、iPhoto 等的 UI 布局?

我是 Cocoa 开发的新手,我正在尝试使用我认为是 iTunes、iCal、iPhoto、Billings、1Password、Numbers、Delicious Library 等应用程序共享的“标准”布局来创建 UI 布局。这种典型的布局可以描述如下:

  • 屏幕左侧的“库”面板,通常用于发现层次结构。该面板通常覆盖大约四分之一的水平空间。
  • 库面板右侧的“主”面板,大部分 UI 交互都发生在该面板上。这占据了剩余的水平空间,我们可以在其中找到 iCal 中的月历视图或 iTunes 中的专辑封面和播放列表等内容。
  • 屏幕左下角的一些“实用程序”面板,通常用于附加选项等。

是否有记录的模式将展示如何为这些类型的布局“连接”视图和控制器类的最佳实践?例如,要使用多少个 ViewController,使用基于 NSDocument 的方法是否有意义,一些常见的陷阱等等?这种布局非常流行,我很惊讶似乎没有任何好的参考。

更新: 我忘了提到我可以访问 Apple Developer 网站,虽然我可以在 Cocoa 中找到不同类的库参考,但我似乎无法找到一个很好的参考来说明如何在我的布局中将它们整合在一起描述。

像 Aaron Hillegass' 和其他人这样的书籍非常适合学习 Cocoa 的基础知识和创建简单的界面(在连接到 NSDocument 的视图上布置的一些控件),但在指导您使用我描述的 UI 布局方面并不那么好。

谢谢。

0 投票
1 回答
427 浏览

iphone - 实现 UIToolBar 使其同时充当 UITabBar 和 UIToolBar

我有一个有趣的问题。我正在开发一个涉及照片的应用程序,因此屏幕空间非常宝贵。此外,使用消失和重新出现的导航/工具栏控制器(如在相机应用程序中)对我来说没有意义。在一个完美的世界中,我会使用 UITabBar 在我的程序实现的 4 个主要导航视图控制器之间切换,但是大多数时候我也需要在标签栏顶部的工具栏空间。这两个组件在它们之间占用了太多空间,所以我需要一种方法来节省一些空间。

这就是我想出使用工具栏来实现 TabBar 和 ToolBar 功能的想法的地方。工具栏的左侧是 4 个按钮,可以访问我的 4 个主要导航视图控制器。当前在窗口上的那个按钮会被按下。然后会有一个分隔线,在工具栏的右侧将是特定于当前窗口上的任何视图的按钮。

无论如何,我只是想知道是否有人对他们如何实现这一点有任何聪明的想法?

0 投票
1 回答
272 浏览

iphone - 如何从代表外部设置超级视图?

对于我的一个应用程序,我有一个奇怪的设计模式,其中我有一个充当标签栏的工具栏。基本上,我将此工具栏添加到我的所有视图控制器中,并且工具栏本身包含指向我应用程序中 3 个不同导航控制器的指针。当按下工具栏按钮之一时,它应该能够删除当前在窗口上的导航控制器,并添加用户选择的导航控制器。我的问题是我不确定如何将新的导航控制器添加到超级视图。我会实例化一个应用程序委托对象并将其添加到其中吗?或者我是否需要将我的应用程序委托的指针作为类变量发送到工具栏?任何帮助,将不胜感激。

0 投票
1 回答
155 浏览

cocoa - 通用 Cocoa 应用程序架构编程指南

我已经在 OS X 和 iOS 上完成了相当多的 Cocoa 编程,并且我已经获得了相当多的经验,关于什么是有效的,什么是无效的,以及关于事物通常如何组合在一起。但是,Cocoa 架构仍有很多方面不太清楚,我想知道是否可能有某种指南/书籍/等。解释其中一些是如何工作的。

例如,我最近遇到的一个:

  • 设置 NSViewController 并将其“representedObject”绑定到 NSArrayController 的“选择”,然后将 UI 元素绑定到该代表对象,是行不通的。为什么不?处理这种情况的最佳方法是什么?我最终将 NSArrayController 设置为它的代表对象,但这似乎不对 - 这是一个糟糕的设计吗?

过去我还想知道很多其他的小事情——比如如何最好地设置自定义视图。(我实际上曾经在 Interface Builder 中创建一个空白的 NSView,然后在代码中创建我的自定义视图并将其设置为该视图的子视图!) Cocoa 非常灵活,并且有很多方法可以完成相同的事情,但是显然,其中一些,像那样,可能会在未来造成问题。

Apple 开发者网站上有很多我没有时间浏览的参考资料,而且我确信其中很多都包含在各种文档中,但有时第三方资源可能会有所帮助,并且还可以提出主要文档中未涵盖的情况。有什么想法吗?

0 投票
1 回答
278 浏览

cocoa - 根据窗口状态设置视图背景颜色

许多应用程序(例如邮件)中使用的标准源视图样式侧栏在窗口处于活动状态时具有蓝色,而在窗口处于非活动状态时具有另一种颜色 - 跟随标题栏的状态变化。

由于各种原因,我开发了一个自定义侧边栏,但仍然希望背景具有相同的效果。

这个想法是制作一个NSView填充背景的自定义,并将其用作侧边栏的背景。我已经给它一个我想要设置的属性“活动”,并且 draw 方法相应地用两个不同的渐变填充矩形。

现在,问题是:将这种视图与窗口状态挂钩的最佳方法是什么?