小编jbe*_*net的帖子

从不同的线程使用时,NSDateFormatter崩溃

我们不断得到一个随机的,奇怪的崩溃NSDateFormatter.相关的堆栈跟踪是:

Program received signal:  “EXC_BAD_ACCESS”.
#0  0x00000005 in ?? ()
#1  0x0213e3c3 in udat_parse ()
#2  0x01d4e1ca in CFDateFormatterGetAbsoluteTimeFromString ()
#3  0x01d4e225 in CFDateFormatterCreateDateFromString ()
#4  0x003e2608 in getObjectValue ()
#5  0x003e2921 in -[NSDateFormatter getObjectValue:forString:errorDescription:] ()
#6  0x003e21cd in -[NSDateFormatter dateFromString:] ()
Run Code Online (Sandbox Code Playgroud)

日期格式化程序仍在内存中(即未释放或损坏).我唯一能想到的是崩溃时的字符串不符合格式,但我怀疑这会使格式化程序完全崩溃.(事先检查格式是非常简单的).

有什么想法吗?

multithreading exc-bad-access objective-c nsdateformatter ios

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

在Google App Engine上使用小数秒的字符串到日期时间

我需要将一个字符串转换为一个日期时间对象,以及小数秒.我遇到了各种各样的问题.

通常,我会这样做:

>>> datetime.datetime.strptime(val, "%Y-%m-%dT%H:%M:%S.%f")
Run Code Online (Sandbox Code Playgroud)

但错误和旧文档告诉我python2.5的strptime没有%f ...

进一步调查,似乎App Engine的数据存储不喜欢小数秒.在编辑数据存储区实体时,尝试将.5添加到datetime字段会给出以下错误:

ValueError: unconverted data remains: .5
Run Code Online (Sandbox Code Playgroud)

我怀疑不支持小数秒......所以这只是在数据存储区查看器上,对吧?

有没有人绕过这个问题?我想使用本机日期时间对象...我宁愿不存储UNIX时间戳...

谢谢!


编辑:感谢Jacob Oscarson的.replace(...)提示!

要记住的一件事是在喂入之前检查nofrag的长度.不同的来源使用不同的精度秒.

对于那些寻找类似内容的人来说,这是一个快速功能:

def strptime(val):
    if '.' not in val:
        return datetime.datetime.strptime(val, "%Y-%m-%dT%H:%M:%S")

    nofrag, frag = val.split(".")
    date = datetime.datetime.strptime(nofrag, "%Y-%m-%dT%H:%M:%S")

    frag = frag[:6]  # truncate to microseconds
    frag += (6 - len(frag)) * '0'  # add 0s
    return date.replace(microsecond=int(frag))
Run Code Online (Sandbox Code Playgroud)

python google-app-engine datetime

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

具有核心部分的命名空间包?

这个问题跟进在Python中创建命名空间包的方法以及如何在Python中创建命名空间包?.

注意PEP 420分发文档,其中说明:

您不能在命名空间包中包含任何其他代码和数据__init__.py.尽管它可能在开发期间或项目作为.egg文件安装时起作用,但在使用"系统"打包工具安装项目时它将无法工作 - 在这种情况下,__init__.py文件将不会被安装,更不用说执行了.


这似乎使得无法拥有一个带有独立分布式扩展子包的"主库"包.我想要的是能够:

  1. 定义一个核心库包,使用如下:

    import mylibrary
    
    mylibrary.some_function()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 允许库扩展,单独打包和分发,使用如下:

    import mylibrary.myextension
    
    mylibrary.myextension.some_other_function()
    
    Run Code Online (Sandbox Code Playgroud)

我希望能够使用命名空间包来实现这一点,但基于上面的问题和链接,似乎并非如此.这可以完成吗?

python setuptools namespace-package

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

防止编译在 OS X 上生成 dSYM(使用 make)

我有一个 C++ 项目(开源),默认情况下不需要删除调试符号。有很多测试可执行文件,在 OS X 上生成了很多 dSYM 文件。我尝试过 -g3 作为 g++ 标志,但无济于事。有想法吗?

谢谢!胡安

c++ macos makefile

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

递归 XPath 的条件

如何在 XPath 中使用递归 AND 条件选择?

例如,给定此文档:

<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
  <file name="foo.mp4">
    <chunks>
      <file>
        <chunks>
          <file>
          <chunks>
            <file>1</file>
            <file>2</file>
            <file>3</file>
            <file>4</file>
          </chunks>
          </file>
          <file>
          <chunks>
            <file>5</file>
            <file>6</file>
            <file>7</file>
            <file>8</file>
          </chunks>
          </file>
        </chunks>
      </file>
      <file>
        <chunks>
          <file>
          <chunks>
            <file>9</file>
            <file>10</file>
            <file>11</file>
            <file>12</file>
          </chunks>
          </file>
          <file>
          <chunks>
            <file>13</file>
            <file>14</file>
            <file>15</file>
            <file>16</file>
          </chunks>
          </file>
        </chunks>
      </file>
    </chunks>
  </file>
</root>
Run Code Online (Sandbox Code Playgroud)

我只想选择:

<file>1</file>
<file>2</file>
<file>3</file>
<file>4</file>
Run Code Online (Sandbox Code Playgroud)

所以,实际上是这样的:

//[name="foo.mp4"]/chunks/*[1]/chunks/*[1]/*
Run Code Online (Sandbox Code Playgroud)

但采用通用方法——即可以覆盖更深嵌套对象的方法。像这样的东西:

//[name="foo.mp4"]/(chunks/*[1]/)+/*
Run Code Online (Sandbox Code Playgroud)

(cond)+不是 XPath 语法,而是我想要的类似正则表达式的表示。

xml xpath recursive-regex

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

返回类型[self class]

是否可以将objective-c中选择器的返回类型设置为类本身?

例如,是否可以执行以下操作:

+ ([self class] *) selectorName;
Run Code Online (Sandbox Code Playgroud)

所以给定一个超级类如:

@interface MyClass : NSObject {}
+ (MyClass *) instanceOfMyClass;
@end

@implementation MyClass 
+ (MyClass *) instanceOfMyClass {
  return [[[[self class] alloc] init] autorelease];
}
@end
Run Code Online (Sandbox Code Playgroud)

在执行以下操作时,子类不需要强制转换返回值:

@implementation MySubClass 
+ (MySubClass *) specialInstanceOfMySubClass {
  MySubClass *instance = [[self class] instanceOfMyClass];
  instance.special = YES;
  return instance;
}
@end
Run Code Online (Sandbox Code Playgroud)

换句话说,我试图揭示静态方法返回类或其子类的实例这一事实.否则,子类需要知道接口中未提供的信息.

谢谢!

iphone objective-c

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