小编Arj*_*hta的帖子

多重连接框架 - 丢失的对等体停留在会话中

我想知道这个Multipeer Connectivity框架是否可以在现实世界中使用,考虑到社区遇到的所有错误.我认为我的设置正确,但我尝试过的所有其他示例项目都遇到了类似的问题.

我遇到的问题可能与Bonjour固有的某些问题有关,我无法弄清楚,但基本上问题如下:

  • MCSession和很多同行都很活跃.
  • 现在,如果设备在会话中,然后强制退出,则"Peer"将无限期地保持连接状态.
  • 即使browser:lostPeer:为该对等方调用该方法并且不再在浏览器中显示为"附近" ,我也无法强制该用户离开.
  • session:peer:didChangeState:不为该对等方调用该方法.
  • 当强制退出的同伴回到应用程序时,它们再次被"发现",browser:foundPeer:withDiscoveryInfo:但仍然存在于session.connectedPeersNSArray中.显然,他们仍然没有收到有关会话的任何数据或更新,实际上并没有连接.
  • 似乎唯一能够将原始对等体注册MCSessionStateNotConnected到会话的方法是将该对等体重新连接到原始会话.然后session:peer:didChangeState:对peerID的新实例所在的位置进行重复调用,并且在peerID MCSessionStateConnected的旧实例调用之后不久MCSessionStateNotConnected.

示例聊天应用程序很好地演示了这个问题:https://developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html

由于似乎没有任何方法可以手动强制从会话中删除对等体,我该怎么办?我应该尝试以某种方式重建会话吗?

这个框架看起来有点混乱,但我试图保留判断力!

session ios multipeer-connectivity

13
推荐指数
1
解决办法
8805
查看次数

ObjectiveC和JavaScriptCore:使用这种调用CallBacks的方法会导致内存问题吗?

免责声明:这是一个很长的帖子,但对于那些使用新的ObjectiveC JavascriptCore框架并在ObjC和JS之间进行异步编码的人来说,这可能非常有价值.

大家好,我是Objective C的新手,我正在将一个javascript通信库集成到我的iOS应用程序中.

无论如何,我一直在尝试使用iOS7中引入的新ObjectiveC JavaScriptCore框架.它在很大程度上非常棒,尽管到目前为止记录很差.

混合语言惯例真的很奇怪,但在某些方面也有点解放.

我应该补充一点,我当然正在使用ARC,因此这有助于从Javascript世界中获得很多.但是在ObjectiveC和JSContext callBacks之间移动时,我有一个非常具体的内存使用问题.就像我在Javascript中执行一个函数,然后执行一些异步代码,然后回调到一个定义的ObjectiveC块,然后调用一个定义的JS回调......我只是想确保我做得对(即一些地方没有泄漏记忆)!

只是为了做正确的事情(因为我引用了一个类self来调用ObjectiveC callBacks我创建了一个weakSelf所以它对ARC很好用(从问题中引用:在这个块中强烈捕获self可能会导致保留周期):

__unsafe_unretained typeof(self) weakSelf = self;
Run Code Online (Sandbox Code Playgroud)

现在,说我有一个JSContext并添加一个功能.我希望这个函数接受一个callBack函数并以"Hello"作为参数调用它,并将另一个函数作为callBack传递.即.

// Add a new JSContext.
JSContext context = [[JSContext alloc] initWithVirtualMachine:[[JSVirtualMachine alloc] init]];

// Add a function to the context. This function takes a callBack function and calls it back with "Hello"
[context evaluateScript: @"var functionA = function(callBack){
      var aMessage = "Foo";
      callBack(aMessage, function(message){
            /* message should say: Foo Bar */
      });
}" …
Run Code Online (Sandbox Code Playgroud)

objective-c objective-c-blocks automatic-ref-counting javascriptcore ios7

6
推荐指数
1
解决办法
4521
查看次数

Bash:将stdout从多个并发命令拆分为列

我使用单个&符号在bash脚本中运行多个命令,如下所示:

commandA & commandB & commandC
Run Code Online (Sandbox Code Playgroud)

他们每个人都有自己的stdout输出,但他们都混合在一起,并在一个不连贯的混乱中淹没控制台.

我想知道是否有一种简单的方法将输出管道输入到他们自己的列中...使用column命令或类似的东西.即.就像是:

commandA | column -1 & commandB | column -2 & commandC | column -3
Run Code Online (Sandbox Code Playgroud)

这种事情的新手,但从最初的挖掘看起来似乎pr可能是票?还是column命令......?

linux bash shell

6
推荐指数
1
解决办法
1326
查看次数

scrollViewDidScroll:在 UITableViewRowAnimation 上?

UITableViewRowAnimation删除一行或添加一行时使用 a时,有时如果该行位于 tableview 的极端,则表格会滚动。

然而,即使它滚动它似乎也没有调用scrollViewDidScroll:委托。

例如,我的委托中有以下代码。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSLog(@"Scrolling %f", scrollView.contentOffset.y);
}
Run Code Online (Sandbox Code Playgroud)

如果用户滚动,它会被调用。但是当我删除一行时:

[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
Run Code Online (Sandbox Code Playgroud)

scrollViewDidScroll:方法根本没有被调用。

有什么方法可以确保在UITableView动画时调用它吗?

谢谢!

iphone uitableview uiscrollview ios

5
推荐指数
1
解决办法
1457
查看次数

Node.js路由:将路由处理程序添加到已经实例化的http服务器

如何将路由处理程序添加到已存在且已实例化的http 服务器

我发现的所有路由器(包括express)似乎都要求将它们传递给http.createServer()方法.

例如用express:

var server = http.createServer(app);
Run Code Online (Sandbox Code Playgroud)

我的主要标准:

  1. sockjs那样添加路由到现有服务器.
  2. 对任何已经使用的路由器(如果有的话)都是不可知的
  3. 不依赖于现有的路由器"app"对象来添加路由(使用路由库创建一个新路由就可以了).

示例:将服务器传递给SockJS

var http_server = http.createServer(); // agnostic    
sockjs_server.installHandlers(http_server, options);    
http_server.listen(...);
Run Code Online (Sandbox Code Playgroud)

在sockjs源代码中完成的方式似乎相当神秘......但我认为它涉及遍历现有的处理程序并用自定义路由器/处理程序覆盖它们.

非常感谢您的帮助!

javascript routes node.js express

5
推荐指数
1
解决办法
2662
查看次数

在JavascriptCore Framework for ObjectiveC中使用setInterval,setTimeout

我一直在尝试新的Objective C JavascriptCore框架.

这很疯狂,但它似乎没有setTimeoutsetInterval.哪个......我不明白.

  1. 我这是对的吗?
  2. 还有替代品吗?

我可以在Objective C中创建计时器,但我的大部分库都是用Javascript编写的,除此之外,看起来很奇怪没有setInterval或者setTimeout!!

我尝试了一些替代方法:

window.setInterval(function(){ /* dosomething */ }, 1000);
setInterval(function(){ /* dosomething */ }, 1000);

var interval;
interval = window.setInterval(function(){ /* dosomething */ }, 1000);
interval = setInterval(function(){ /* dosomething */ }, 1000);
Run Code Online (Sandbox Code Playgroud)

我无法监视JSVirtualMachine中甚至发生的事情.我所知道的是我的代码在setInterval被叫时停止工作.

任何帮助超级赞赏!

javascript objective-c javascriptcore ios7

3
推荐指数
2
解决办法
2536
查看次数

CUDA:为计算能力3.0达到blockIdx.x的最大可能值

首先,我应该说我对C++编程很新(更不用说CUDA了),尽管这是我在大约184年前首次学到的东西.虽然我正在学习,但我会说我对内存分配和数据类型大小有点脱节.无论如何这里是:

我有一个具有3.0计算能力的GPU(这是一款Geforce 660 GTX w/2GB的DRAM).

在CUDA样本中找到./deviceQuery(以及我在网上找到的其他图表),列出了我的最大网格大小:

Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
Run Code Online (Sandbox Code Playgroud)

在2,147,483,647(2 ^ 31-1),x维度是巨大的,有点不错......但是,当我运行我的代码时,在x维度上超过65535,事情变得......奇怪.

我使用了Udacity课程中的一个例子,并对其进行了修改以测试极端情况.我保持内核代码相当简单,以证明这一点:

__global__ void referr(long int *d_out, long int *d_in){
  long int idx = blockIdx.x;
  d_out[idx] = idx;
}
Run Code Online (Sandbox Code Playgroud)

请注意下面ARRAY_SIZE是网格的大小,但也是要进行操作的整数数组的大小.我将块的大小保持在1x1x1.只是为了理解这些限制,我知道只使用1个线程的块进行这么多操作是没有意义的,但我想了解网格大小限制发生了什么.

int main(int argc, char ** argv) {
  const long int ARRAY_SIZE = 522744;
  const long int ARRAY_BYTES = ARRAY_SIZE * sizeof(long int);

  // generate the input array on the host
  long int h_in[ARRAY_SIZE];
  for (long int i = 0; …
Run Code Online (Sandbox Code Playgroud)

c c++ cuda

1
推荐指数
1
解决办法
866
查看次数