小编Sno*_*man的帖子

理解Java中的递归更好一点

好吧,我对Java中的递归感到困惑.说我有以下代码:

static int findShortestString(String[] paths, int lo, int hi) {
        if(lo==hi)
            return lo;
        int minindex=findShortestString(paths,lo+1, hi);
        if(safeStringLength(paths[lo])<safeStringLength(paths[minindex]))
            return lo;
        return minindex;
Run Code Online (Sandbox Code Playgroud)

现在问题不是关于代码本身,而是关于递归如何工作.minindex被设置为等于递归调用.所以第一次运行函数并尝试将minindex设置为某个东西时,它会这样做,然后函数调用自身.但if语句什么时候运行呢?只有当minindex真正拥有真正的价值时它才会运行吗?我只是无法绕过这个.如果minindex导致函数递归并递归,那么if语句什么时候会被检查?当lo==hi?我不明白:(

java algorithm recursion

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

在复制构造函数中的指针

我有一个复制构造函数,如下所示:

Qtreenode(const QtreeNode * & n) {

    x=n->x;
    y=n->y;
    height=n->height;
    width=n->width;
    element=n->element;
Run Code Online (Sandbox Code Playgroud)

}

我在一周前写过这篇文章,今天我回头看了一下,当我把这个复制构造函数称为swChild=new QtreeNode(*(n->swChild));cc 时,我很惊讶于cc的争论是一个引用指针,对吗?但是当我调用它时,我会(*(n-> swChild)),这意味着那个孩子的价值对吗?为什么我的代码有效?

c++ pointers

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

将网格中顺序分配的数字转换为xy坐标

假设我有一个5x5的网格,网格中的每个单元格从0到24,从左到右.给定一个像17这样的单元格数,如何确定单元格的x和y坐标?我已经能够这样做,反之亦然,如果给定坐标我可以计算单元格数:

Cellnumber = x + y?width
(x和y坐标代表每个单元格的左上角)

但现在我想要相反.有任何想法吗?

algorithm

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

Google App Engine乐观并发

我正在阅读Google App Engine 的文档,并偶然发现了一些我不太了解的内容:

数据存储使用乐观并发来管理事务.当两个或多个应用程序实例尝试同时更改同一实体组时(通过更新现有实体或通过创建新实体),提交其更改的第一个应用程序将成功,而其他所有应用程序将在提交时失败.然后,这些其他应用程序可以再次尝试其事务,以将它们应用于更新的数据.请注意,由于数据存储区以这种方式工作,因此使用实体组会限制您可以对给定组中的任何实体执行的并发写入次数.

这是否意味着如果来自两个不同设备的两个不同用户尝试修改同一个对象,那么其中只有一个会成功吗?这是典型的数据库行为,还是GAE限制?其他数据库通常如何处理这种情况,其中两个或多个用户尝试修改同一个对象?

当两个或多个应用程序实例尝试创建新实体时,只有一个会成功,这意味着什么.我理解错了吗?没有两个应用程序实例可以将新对象添加到同一个表中?

database google-app-engine

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

按Google App Engine上的密钥ID过滤查询

我知道有一种方法可以根据其密钥ID使用某个实体get_by_id(someId),但是有没有办法让ID高于某个指定值的实体?使用常规过滤器,我们可以做query.filter("customId >", someId),但是如何为内置密钥ID执行此操作?

database google-app-engine

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

何时继承UITableView?

我有一个MainViewController,我想添加两个UITableView,每个都有不同的单元格.但是我不想通过检查表委托方法来阻塞我的MainViewController代码,然后对它进行操作.太乱了.

所以我想我会继承UITableView并让它自己处理cellForRow和其他表方法,这样当我想向MainViewController添加一个表时,我只需要

CustomTable *customTable = [[CustomTable alloc] init];
[self.view addSubview:customTable];
Run Code Online (Sandbox Code Playgroud)

并且所有委托方法都将在该类中处理,从而使我的MainViewController混乱.

我接近这个错吗?我应该继承UITableViewController的子类吗?有什么不同?

iphone objective-c uitableview ios

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

将.c文件添加到xcode

我正在尝试将hypen库添加到我的Xcode iOS项目中,并且它具有4个文件:hyphen.c,hyphen.h,hnjalloc.c,hnjalloc.h。我将它们拖到我的项目中,然后单击构建,但是我得到了体系结构i386错误的未定义符号。除了将它们拖到我的项目中之外,我还应该采取其他步骤吗?

c xcode objective-c

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

使用unicode字符解码JSON数组

我有以下JSON数组:

[u'steve@gmail.com']
Run Code Online (Sandbox Code Playgroud)

"你"显然是unicode角色,它是由Python自动创建的.现在,我想将其重新引入Objective-C并使用以下方法将其解码为数组:

+(NSMutableArray*)arrayFromJSON:(NSString*)json
{
    if(!json) return nil;
    NSData *jsonData = [json dataUsingEncoding:NSUTF8StringEncoding];
   //I've also tried NSUnicodeStringEncoding here, same thing
    NSError *e;
    NSMutableArray *result= [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
    if (e != nil) {
        NSLog(@"Error:%@", e.description);
        return nil;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误: (Cocoa error 3840.)" (Invalid value around character 1.)

我该如何解决这个问题?

编辑:这是我如何将Python中的实体带回objective-c:

首先,我将实体转换为字典:

def to_dict(self):
    return dict((p, unicode(getattr(self, p))) for p in self.properties()
                if getattr(self, p) is not None)
Run Code Online (Sandbox Code Playgroud)

我将此字典添加到列表中,然后将my responseDict ['entityList']的值设置为此列表 self.response.out.write(json.dumps(responseDict))

然而,我得到的结果仍然是'u'字符.

python cocoa-touch json objective-c ios

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

NSBlockOperation和start方法

在查看我的代码时,我一直在看到,在许多地方我一直在假设调用[NSBlockOperationInstance start];将在主线程上启动此操作.我不知道为什么我这么想,但我不应该这么肯定.我检查了文档,但没有找到任何明确提到该块运行的线程.但是,assert([NSThread isMainThread]);在块的主体中断言确实每次都使用start,所以我不确定这是不是巧合.任何人都对这将如何运作有更深刻的理解?

我忘了提到在主线程上调用[op start].

iphone objective-c ios

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

Format指定类型'unsigned short'但参数的类型为'int'

我有一个扫描字符串的方法,将任何新行转换<br>为HTML.有问题的一行是:

NSCharacterSet *newLineCharacters = [NSCharacterSet characterSetWithCharactersInString:
          [NSString stringWithFormat:@"\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]];
Run Code Online (Sandbox Code Playgroud)

Xcode在这里给我一个警告:

Format specifies type 'unsigned short' but the argument has type 'int'
Run Code Online (Sandbox Code Playgroud)

它建议我改变这一切%C%d,但是最终证明打破功能.这样做的正确方法是什么,为什么Xcode推荐错误的东西?

xcode objective-c

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