我在iPhone上使用AsyncSocket与服务器通信.AsyncSocket基于运行循环,但我的应用程序基于线程.这意味着,我启动一个新线程来写入数据,并等待直到在同一个线程上收到响应.但我不能直接从另一个线程调用AsyncSocket的方法,我必须使用:
[self performSelectorOnMainThread:@selector(writeSomeData:) withObject:dataToWrite waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)
它确实有效,但我无法通过这种方式调用我的方法"writeSomeData:",因为performSelectorOnMainThread不返回任何内容.
方法writeSomeData:做这样的事情:
-(NSData *)writeData:(NSData *)dataToWrite {
dataReceived = nil; // AsyncSocket writes data to this variable
[asyncSocket writeData:dataToWrite withTimeout:-1 tag:0];
[asyncSocket readDataToData:[@"<EOF" dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0];
int counter = 0;
while (dataReceived == nil && counter < 5) {
// runLoop is [NSRunLoop currentRunloop]
[runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.3]];
++counter;
}
return [dataReceived copy];
}
Run Code Online (Sandbox Code Playgroud)
我可以通过访问类变量"dataReceived"获得响应,但此时内容已更改.
任何人都可以告诉我如何在不同的线程上使用AsyncSocket(或者一般来说,如何处理基于运行循环的类),这样如果我调用该类的方法,它会一直阻塞,直到执行该方法并收到响应?
谢谢.
我有一个限制,所以只能
ConfigurationHolder.config.support.reminder.web.person.max存储对象.我没有找到如何添加与特定属性无关的验证器.所以现在我以这种方式实现它.你们有什么想法让它变得更好吗?
package support.reminder.web
import org.codehaus.groovy.grails.commons.ConfigurationHolder;
class Person {
String firstName
String lastName
String email
Date lastDutyDate
static constraints = {
firstName(blank: false)
lastName(blank: false)
email(blank: false, email: true)
lastDutyDate(nullable: true)
id validator: {val ->
if (val)
Person.count() <= ConfigurationHolder.config.support.reminder.web.person.max
else
Person.count() < ConfigurationHolder.config.support.reminder.web.person.max
}
}
String toString() {
"[$firstName $lastName, $email, $lastDutyDate]"
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个用于使用imap存档电子邮件的应用程序.此应用程序中还有许多需要存档的imap帐户.
在这个时刻,应用程序不时连接到imap帐户并只下载新的电子邮件.我的问题是,每次连接到imap帐户时,它都会验证来自所有文件夹的所有电子邮件,并仅下载尚未下载的电子邮件(我存储所有电子邮件的Message-ID,并仅下载具有Message-ID的电子邮件)没有存储).所以我想知道是否有替代方案,因为验证所有电子邮件需要一些时间(10-20K需要2-5分钟).
我使用JavaMail API连接到imap帐户.
我正在解决使用以下主题解码邮件的问题:
主题:=?ISO-8859-1?Q?Re:Re:Re:Fwd:(GI?= =?ISO-8859-1?Q?Support-Id:11729)?=
javamail将其解码为:
=?ISO-8859-1?Q?Re:Re:Re:Fwd:(GI?= Support-Id:11729)
这是一个有效的主题吗?或者javamail能够读取这个吗?
问候
有没有办法在这些函数中重用迭代数组代码:
public static double[] ln(double[] z) {
// returns an array that consists of the natural logarithm of the values in array z
int count = 0;
for (double i : z){
z[count] = Math.log(i);
count += 1;
}
return z;
}
public static double[] inverse(double[] z) {
// returns an array that consists of the inverse of the values in array z
int count = 0;
for (double i : z){
z[count] = Math.pow(i,-1);
count += 1;
}
return …Run Code Online (Sandbox Code Playgroud) 我看到越来越多的页面(例如translate.google)将html代码格式化为一行?是否缩短了加载时间?现在是最先进的吗?
谢谢
我有桌子,下面的片段.
package test;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = "code")},
name = "coupons")
public class Coupon implements Serializable {
private static final long serialVersionUID = 5534534530153298987L;
@Id
@GeneratedValue
@Column(name = "id")
private long id;
@Column(name = "available_count")
private Integer availableCount = 1;
public Integer getAvailableCount() {
return availableCount;
}
public void setAvailableCount(Integer availableCount) {
this.availableCount = availableCount;
}
}
Run Code Online (Sandbox Code Playgroud)
如何制约只允许availableCount非负面?
我有以下div:
<div visible="false"
style="background-image:url('../Contents/Images/item-background-selected.png'); width:113px; height:58px; background-repeat: no-repeat; position: absolute;" />
<div>
Run Code Online (Sandbox Code Playgroud)
尽管visible财产设置为,它仍然可见false.但当我background-image从风格中删除它时,它是隐藏的.
如何保持背景隐藏它?
提前致谢.
例如,:符号 - 我试图弄清楚它的:意义和方式,例如,@从任何符号,也从无符号.
如果有一个非常有用的指南!