我正在开发一个包含Mac应用程序和共享代码的iPad应用程序的项目.如何使用条件编译开关从iPhone项目中排除特定于Mac的代码,反之亦然?我注意到,TARGET_OS_IPHONE和TARGET_OS_MAC都为1,所以他们都总是如此.是否有另一个我可以使用的开关只会在编译特定目标时返回true?
在大多数情况下,我通过移动#include <UIKit/UIKit.h>和#include <Cocoa/Cocoa.h>进入两个项目的预编译头来获得合作的文件.我正在共享模型和一些实用程序代码,用于从RSS提要和Evernote获取数据.
特别是,该[NSData dataWithContentsOfURL:options:error:]函数对选项参数iOS 3.2及更早版本和Mac OS 10.5采用不同的常量,而且比iOS 4和Mac OS 10.6更早.我正在使用的条件是:
#if (TARGET_OS_IPHONE && (__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_3_2)) || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5))
这似乎有效,但我想确保这是防弹的.我的理解是,如果Mac版本设置为10.6,但iOS版本设置为3.2,即使它正在编译iOS 3.2,它仍然会使用新的常量,这似乎是不正确的.
在此先感谢您的帮助!
我有一个名为User的域对象.用户的属性包括ssoId,name,email,createdBy,createdDate和userRole.其中,ssoId必须是唯一的,因为没有两个用户可以拥有相同的sso id.所以我的equals方法检查sso id并返回true或false.
@Override public boolean equals(Object o) {
if (!(o instanceof User))
return false;
return user.getSsoId().equals((User)o.getSsoId());
}
Run Code Online (Sandbox Code Playgroud)
我觉得这是一个不正确的实现,尽管就业务规则而言是正确的.对于具有相同sso id但具有不同的名称或电子邮件或两者的值的两个对象,上述实现将返回true.我应该更改我的平等合同以检查所有字段的相等性吗?你的建议是什么?
获得客户数据的第一种方法的优势在哪里?
ICustomerService customerService = MyService.GetService<ICustomerService>();
ICustomerList customerList = customerService.GetCustomers();
Run Code Online (Sandbox Code Playgroud)
与
ICustomerRepository customerRepo = new CustomerRepository();
ICustomerList customerList = customerRepo.GetCustomers();
Run Code Online (Sandbox Code Playgroud)
如果您理解我的问题,您将不会问MyService类的实现如何;-)
这里是Repo的实施......
interface ICustomerRepository
{
ICustomerList GetCustomers();
}
class CustomerRepository : ICustomerRepository
{
public ICustomerList GetCustomers()
{...}
}
Run Code Online (Sandbox Code Playgroud) 在C++中,我有一个绑定到pid的资源.有时,与该pid相关联的进程异常退出并泄漏资源.
因此,我正在考虑将pid放在记录资源正在使用的文件中.然后,当我去获取资源时,如果我看到一个项目已注册为正在使用,我将搜索以查看与pid匹配的进程当前是否正在运行,如果没有,则清理泄漏的资源.
我意识到一个新的未分离的pid现在共享相同数字的可能性非常小,但这比泄漏更好,我现在没有清理.
或者,也许有一个更好的解决方案,如果是这样,请建议,否则,我会追求pid录音.
更多详细信息:资源是通过tcp在客户端和服务器之间进行通信的端口号.只有一个客户端实例可以在计算机上使用给定的端口号.端口号取自一系列可用的端口号.在客户端运行时,它会记录它在磁盘上的特殊文件中使用的端口号,然后在退出时清除此条目.对于异常退出,当不再使用端口号时,这并不总是被清除并且端口号被注释为正在使用中.
给定一个数组:
arr = [['a', '1'], ['b','2'], ['c', '3']]
Run Code Online (Sandbox Code Playgroud)
什么是将它分成两个数组的最佳方法?
例如,从上面的数组我想得到以下两个数组:
first = ['a','b','c']
second = ['1', '2', '3']
Run Code Online (Sandbox Code Playgroud)
我能用这个collect吗?
有人能告诉我究竟是什么NSCFTimer?当我向NSTimer询问计时器时,我明白了.我的问题是,我正在尝试检查一个对象(据说是一个NSTimer,注意"据说"这个词,这就是为什么我正在检查)是NSTimer类的对象,它似乎不起作用.这个"NSCFTimer"是否以任何方式阻碍了这个过程?
如何在OS X 10.6上正确安装英特尔线程构建模块(TBB)的开源版本?开源版本似乎没有正确的安装脚本.
我想知道是否有人有使用3270协议检索数据的经验.到目前为止我的理解是:
我需要使用telnet连接到SNA服务器,发出命令,然后返回一些数据.我不确定这个连接是如何建立的,因为我读过标准的telnet连接不起作用.我还读到IBM有一个库可以提供帮助,但没有找到更多关于它的信息.
我假设返回的数据是一个1920字符的字符串,因为3278屏幕是80x24字符.我只需要将这些字符解析到适当的字段中.关于3270 protcol我读的越多,情况就越少 - 我在提供的Jagacy 3270 Java库试验文档中读到了属性在协议中标记的属性和属性之前的字符'A'理解是有更多的字符表示其他因素,例如字段是否可编辑.
我有理由相信我的想法太简单了.举个例子来看一个包含项目列表的屏幕 - 在24个可见行中的一个上按一个特殊键,向下钻取有关该行的更详细信息.
还有人建议我可以发出打印命令.这有一些积极的影响 - 如果返回的字符串的格式不是1920,因为它包含这些字符,例如'A'表示用户如何与终端交互,打印将根除这些.此外,它将不再需要翻阅大量数据.另一方面,我不知道如何从print命令中将数据检索回Java.
我目前无法访问SNA服务器,但有一些屏幕截图显示终端在获得连接后将会是什么样子,因此将开始解析.有这么多的假设,而不是很多关于数据看起来像什么的想法,我感到非常难过.有没有人知道这些系统可能会帮助我回到正轨?
当机器人使用HEAD攻击我的ASP.NET MVC站点时,我想正确支持HTTP HEAD请求.我注意到,对网站的所有HTTP HEAD请求都返回404,特别是来自http://downforeveryoneorjustme.com.哪个真烦人.希望他们像其他所有好机器人一样切换到GET.
如果我只是[AcceptVerbs(HttpVerbs.Get)]改为[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]将MVC知道放弃请求的正文?
你做了什么来支持HTTP HEAD请求?(代码示例会很棒!)