我有一个cards52(13x4)的数组(cardsOut)和另外25个卡(5x5)的数组().我想随机将52张卡中的元素复制到25张卡片中.
另外,我不想在5x5阵列中有任何重复.所以这就是我所拥有的:
double row=Math.random() *13;
double column=Math.random() *4;
boolean[][] duplicates=new boolean[13][4];
pokerGame[][] cardsOut = new pokerGame[5][5];
for (int i=0;i<5;i++)
for (int j=0;j<5;j++){
if(duplicates[(int)row][(int)column]==false){
cardsOut[i][j]=cards[(int)row][(int)column];
duplicates[(int)row][(int)column]=true;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码中有2个问题.首先,行和列的随机值仅生成一次,因此每次都将相同的值复制到5x5数组中.由于每次都复制相同的值,我不确定我的重复检查器是否非常有效,或者它是否有效.
我该如何解决?
我在UIView中有一个UITableView,它有一条橡皮绳的PNG连接在tableview的顶部.它保持在顶部,但当桌子向下滑动时,它不是桌子的一部分,只是视图的一部分.
期望的行为:
当用户拉下桌面视图时,我想以某种方式让这根绳子像橡皮筋一样真实地延伸
当他们放开桌子时,桌子单元以与附着的橡皮筋相同的速度向后延伸.
这不是用于滚动表格视图,而是当你只说2或3个单元格并将其拉下来时,它会拉伸一根绳子,当你松开时,它会重新上升.
它与默认表视图的行为相同,但现在只有一根绳子连接到顶部.
我不是在寻找任何具体的答案,因为我知道这可能很困难,但如果您知道我应该朝哪个方向努力来实现这一目标,请分享.
我看了看并找了答案,但似乎找不到答案.很多人问过,但没有人得到答案.我有一个使用AVAudioRecorder录制音频的应用程序.现在我只想将两个或多个录音合并到一个可以通过电子邮件发送的文件中.有没有人知道如何做到这一点?
(这个答案建议使用一种叫做音频服务队列的东西,但我对此一无所知)
我正在运行我的所有应用程序以确保它不仅仅是一个应用程序,并且在我拥有的每个应用程序中,当我在iOS5模拟器或设备上运行时,该viewWillAppear方法在每个视图上被调用两次.我有一个简单的NSLog(@"1");,每次在我的控制台中出现两次.这只是我,还是正在发生的事情?(它只在iOS4中调用一次)
这是调用viewWillAppear两次调用视图的代码:
CloseDoorViewController *closeVC;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
closeVC = [[ CloseDoorViewController alloc] initWithNibName:@"CloseDoorViewIpad" bundle:nil];
} else {
closeVC = [[ CloseDoorViewController alloc] initWithNibName:@"CloseDoorViewController" bundle:nil];
}
[self.view addSubview:closeVC.view];
[self presentModalViewController:closeVC animated:NO];
Run Code Online (Sandbox Code Playgroud) 通常我只是随机地组合一个应用程序,只要它有效,但这意味着我不会关注任何设计模式.我的应用程序目前广泛使用全局变量(我AppDelegate在每个视图控制器中都有一个my实例来访问我在我声明的属性AppDelegate.h).虽然它做了我想做的事情,但我读到这不是一个好的设计实践.
所以我想开始使我的代码"合法".但是,我无法想象我的应用程序现在没有全局变量.它们对应用程序的健康非常重要,但这必然意味着我做错了什么,对吧?我无法想象我还会做些什么.以此为例:

这里有两个视图控制器,a SideViewController和a MainViewController.使用全局变量,比如说整个应用程序有一个SideViewController和MainViewController(appDelegate.sideViewController和appDelegate.mainViewController)的共享实例,我可以轻松地在两个视图控制器之间进行通信,这样如果我在我的"新闻源"中按下SideViewController,我可以告诉我MainViewController重新加载它视图.
但是,如果不是全局变量,我无法想象如何做到这一点?如果我的事件发生,我SideViewController将如何MainViewController以符合设计标准的方式通知我?
我正试图通过使用通知.在我的视图控制器类中,我有一个bool isFullScreen.当这个bool的值发生变化时,我希望将通知发送给所有观察类.我不太确定如何做到这一点,因为BOOL不是一个对象.我怎么做到这一点?
使用访问器似乎是在集合对象上获取KVO通知的方法,但这似乎不适用于UIViewController的childViewControllers NSArray属性.我希望在向此属性添加或删除对象时收到通知.所以我尝试了这个:
[self addObserver:self forKeyPath:@"childViewControllers" options:NSKeyValueObservingOptionNew context:nil];
-(NSUInteger)countOfChildViewControllers
{
return self.childViewControllers.count;
}
Run Code Online (Sandbox Code Playgroud)
但我不确定我是否做得对,我没有得到任何通知.我想要的是什么?
我试图将此处找到的代码转换为二进制算法,因为线性方法非常慢.我有一个工作实现,但似乎有些东西我缺少,因为我得到的结果不精确(也就是说,如果我从宽度加上或减去20个左右像素,我得到相同的截断string..it应该更准确一点并且更接近切割):
-(NSString*)stringByTruncatingToWidth:(CGFloat)width withFont:(UIFont*)font addQuotes:(BOOL)addQuotes
{
int min = 0, max = self.length, mid;
while (min < max) {
mid = (min+max)/2;
NSString *currentString = [self substringWithRange:NSMakeRange(min, mid - min)];
CGSize currentSize = [currentString sizeWithFont:font];
if (currentSize.width < width){
min = mid + 1;
} else if (currentSize.width > width) {
max = mid - 1;
} else {
min = mid;
break;
}
}
return [self substringWithRange:NSMakeRange(0, min)];
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到蝙蝠可能有什么问题吗?(这是一个类别方法,因此self是一个NSString.
在这个问题中,我询问了以下代码并保留了周期:
__weak Cell *weakSelf = self;
NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
UIImage *image = /* render some image */
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[weakSelf setImageViewImage:image];
}];
}];
[self.renderQueue addOperation:op];
Run Code Online (Sandbox Code Playgroud)
所有答案都指出在这里使用弱引用不是必需的,因为此代码不会导致保留周期.但是,在尝试更多代码时,以下操作会导致保留周期(如果我不使用弱引用,则不会释放当前视图控制器)
//__weak ViewController *weakSelf = self;
MBItem *close = [[MBItem alloc] initWithBlock:^{
[self dismissModalWithDefaultAnimation:NO];
}];
NSMutableArray *items = [[NSMutableArray alloc] initWithObjects:close, nil];
[self.childObject setItems:items];
Run Code Online (Sandbox Code Playgroud)
为什么第二个会导致保留周期而不是第一个?
Memcache是其中一个解决方案绝对可以解决的问题之一,而且没有人能真正给出一个合适的答案,也许是因为没有.所以我不是在寻找一个直接的答案,但也许只是为了让我朝着正确的方向前进.
对于典型的请求,这是我的AppStats信息:

因此,在总共440毫秒的请求中,我在memcache中花费了342毫秒.在这里,我认为memcache应该闪电般快速.我一定做错了什么.
在我的管理控制台中查看我的memcache统计信息,我有:
Hit count: 3848
Miss count: 21382
Hit ratio: 15%
Run Code Online (Sandbox Code Playgroud)
我不是这方面的专家,但我很确定15%是可怕的.
上面的典型请求有点太详细无法解释,但基本上,我创建并放置一个新实体,它还更新并放置父实体,它还更新并放置与父实体关联的任何用户.
在这一切中,我总是按键,从不查询.哦,我正在使用NDB,因此所有基本的memcache内容都会自动处理.所以我从来没有在我的代码中亲自手动触摸memcache.
有任何想法吗?
编辑:这是我的请求的细分

所以我只有2个数据存储获取和2个放置.其余的是自动处理memcache的东西.为什么这么做呢?我会手动处理这些东西会更好吗?
objective-c ×8
iphone ×7
ios ×5
algorithm ×1
avfoundation ×1
cocoa-touch ×1
duplicates ×1
ios5 ×1
java ×1
memcached ×1
random ×1