我已经熟悉了iPhone SDK中的NSXMLParser,但我发现它的事件驱动性质对我来说很尴尬.我只是想提取一些元素值,但是这个必须处理startElement,foundCharacters和endElement的概念似乎比实际应该更多的工作.我只是以错误的方式看待这个问题,还是在iPhone SDK中使用XML更简单的基于树/ DOM的方式?
如果建议只是使用NSXMLParser,是否有某些设计模式可以用来保持我的代码在startElement方法中没有5级嵌套ifs?
非常简单的用例:假设一个iOS应用程序显示一个带有电影列表的MovieListController视图(在a内UINavigationController).当用户触摸一个上,应用程序推送MovieDetailController到导航堆(即[[MovieDetailController alloc] initWithMovieId:(NSString *),在MovieDetailController的viewDidAppear:方法,它使一个HTTP调用来检索基于传给它的电影ID的信息.
挑战在于,它MovieDetailController被立即推送到导航堆栈,并且在未检索到细节的情况下持续一两秒,视图显示了一堆空白字段,这是不合需要的.
为了解决这个问题,我正在考虑MovieListController不要立即将其MovieDetailController推入堆栈.相反,它提出了一个进度指示器(我使用SVProgressHUD),然后调用MovieDetailController的initWithMovieId:这将揭开序幕HTTP调用方法.然后,当接收到数据时,MovieDetailController将回调回去MovieListController以删除进度指示器,然后将其推MovieDetailController送到导航堆栈.
这种情况有更好的模式吗?我是否应该考虑在MovieDetailController准备就绪时将其自身推入导航堆栈?
注意:我已经考虑过加载详细视图并设置一个活动指示器,但你仍然可以看到它后面的"空视图"看起来有点奇怪.我也考虑过只MovieListController检索细节本身,但这似乎打破了封装模型 - MovieListController应该关注列出电影,而不是关于它们的细节.
有什么想法吗?这个电影的东西只是一个例子 - 在这里寻找一般模式.
我有一堆48位(6字节)值,我需要对称加密.这两个要求是:
得到的加密值也需要48位(6字节)长.它们关键本身可以(并且最好是)更长时间来防止暴力攻击.
产生的加密值需要是确定性的,即使用密钥B的值A将始终产生加密值C(我们在运行中加密并向用户显示加密数据,因此需要始终显示相同的值)
我发现的所有块密码都使用了64的最小块大小并且看起来是固定的(不能使用任意块大小).我应该考虑流密码吗?
我在Java中这样做.
注意:我已经看到了这个问题和相关的答案,但不清楚这些建议是否符合我的第二个要求.
我有一些应用alpha透明度的javascript代码.在此之前,它会尝试检测浏览器支持的透明度类型,并将其存储在变量中以供日后使用.这是代码的样子:
// figure out the browser support for opacity
if (typeof br.backImg.style.opacity != 'undefined')
opacityType = 'opacity';
else if (typeof br.backImg.filters == 'object')
opacityType = 'filter';
else
opacityType = 'none';
Run Code Online (Sandbox Code Playgroud)
对于Firefox和Safari,第一个条件为真,对于IE7,第二个条件为真,但对于IE6,它落到最后一个条件.为什么IE6没有过滤器对象?有没有更好的方法来检测这个?
我正在处理一个未记录的API,我正在尝试进行一些逆向工程 - 不要担心这不是恶意的,只是试图以创造性的方式完成一个用例.
我有一个指向C结构的指针.有没有办法让我通过检查这个结构有多少成员来确定?他们的价值?
我怀疑实际的会员名称不可用,但也许他们是?
现在我在连接数据库时遇到了一些麻烦.我知道我正在寻找的表存在,因为当我使用命令行访问它们时,可以查询它们.
可能是一些轻微的疏忽,但我会喜欢一些帮助.
这是我连接到数据库包持久性的地方;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
public class DBRegistry {
private static DBRegistry db = null;
private static Connection connection = null;
private DBRegistry() {};
public static synchronized DBRegistry getUniqueInstance() {
if (db == null) {
db = new DBRegistry();
return db;
}
else return db;
}
public synchronized Connection getDBConnection() {
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:src/database/taskMan.db");
return connection;
}
catch (SQLException e) {e.printStackTrace();}
catch (ClassNotFoundException e) {e.printStackTrace();}
return null;
}
public synchronized void closeConnection() { …Run Code Online (Sandbox Code Playgroud) 我在Microsoft Visual Studio Express 2012中编译了以下C程序:
int main() {
int a[300000];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这与msvcr110d.dll中的堆栈溢出崩溃!__ crtFlsGetValue().
如果我将数组大小从300,000更改为200,000它可以正常工作(因为这个简单的程序可以说是"工作",因为它没有做任何事情).
我在Windows 7上运行,并且还在Cygwin下使用gcc尝试了这个并且它产生了相同的行为(在这种情况下是一个seg错误).
有没有搞错?
objective-c ×3
c ×2
java ×2
cryptography ×1
encryption ×1
filter ×1
ios ×1
iphone ×1
javascript ×1
jdbc ×1
msvcrt ×1
opacity ×1
sqlite ×1
transparency ×1
uikit ×1
windows ×1