小编Jon*_*an.的帖子

是否有"官方"/标准CSS3渐变语法?

我知道有-webkit-gradient-moz-linear-gradient.但是定义渐变的标准方法是什么?

就像有:-webkit-border-radius-moz-border-radius标准是有意义的border-radius.

css standards gradient css3

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

将字符串的每个单词中的第一个字符更改为大写

我找到了以下功能:

CFStringCapitalize

"将字符串每个单词中的第一个字符更改为大写(如果它是小写字母字符)."

void CFStringCapitalize (
   CFMutableStringRef theString,
   CFLocaleRef locale
);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何将它与我的NSMutableString一起使用?

谢谢,

戈捷.

iphone objective-c

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

复制或保留Block时EXC_BAD_ACCESS

据我所知,Block就像一个对象,因为你可以向它发送复制或释放消息,例如:

[myBlock copy];
Run Code Online (Sandbox Code Playgroud)

但是每当我这样做或释放一个块时,我都会得到EXC_BAD_ACCESS.

如果我使用块函数,一切都按预期工作,例如:

Block_copy(myBlock);
Run Code Online (Sandbox Code Playgroud)

我认为释放和复制块的两种方式都是相同的?

这不是一个问题,但如果我有一个Block的属性(副本)有点烦人,我必须自己编写setter方法.

例如:使用属性:

//Header
@property (nonatomic, copy) void (^cancelledBlock)(void);

//Implementation
@sythesize cancelledBlock;
Run Code Online (Sandbox Code Playgroud)

设置时会导致EXC_BAD_ACCESS cancelledBlock

但如果我这样做:

//Header
@property (nonatomic, copy) void (^cancelledBlock)(void);

//Implementation
@sythesize cancelledBlock; //saves me doing the getter as well

- (void)setCancelledBlock:(void (^)(void))aCancelledBlock {
    if (cancelledBlock == aCancelledBlock) {
        return;
    }
    void (^oldValue)(void) = cancelledBlock;
    cancelledBlock = Block_copy(aCancelledBlock);
    Block_release(oldValue);

}
Run Code Online (Sandbox Code Playgroud)

没有EXC_BAD_ACCESS,一切都按预期运行.

iphone exc-bad-access objective-c objective-c-blocks

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

Java中的接口和泛型

我有代码:

Set<? extends Notifiable> notifiables;
Run Code Online (Sandbox Code Playgroud)

通知是一个界面.我不明白上面的代码和之间的区别:

Set<Notifiable> notifiables;
Run Code Online (Sandbox Code Playgroud)

如果Notifiable是一个类,那么我就会理解它的区别,第一个代码将允许Notifiable和Notifiable的任何子类,而第二个代码只允许Notifiable(而不是任何子类)

由于您不能拥有接口实例,我可以在集合中添加/ etc?在我看来,只有两个选项,或者任何实现可通信的东西(在这种情况下,如何与第一个代码不同),或者只有"Notifiable"的实例,它们不存在,因此没有任何东西(这是毫无意义的应抛出编译时错误).

java generics interface

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

swift中enum case中的可选参数

在swift中,函数可以具有可选参数,这些参数具有默认值,例如:

func f(a:Int, b:Int?=nil) {}

f(1);
f(1,2);
Run Code Online (Sandbox Code Playgroud)

我想用枚举的相关值来做这个.在这篇关于类型安全url路由的帖子之后,我想有一个可以采用可选参数的路由,例如:

enum StopPoint {
    case Search(query:String, limit:Int?=nil)
}
Run Code Online (Sandbox Code Playgroud)

但是它说我不能为元组中的参数设置默认值.然而,可能存在诸如case Arrivals(stopId:Int)但是通常不可能具有具有一个命名参数的元组的情况.

那么是否可以使用带有默认参数的枚举,并且关联值是否为元组?

enums swift

14
推荐指数
3
解决办法
6557
查看次数

Xpath和innerHTML

我可以使用什么Xpath表达式来查找实际文本(innerHTML)是Logout的所有锚(只是'a')元素.

就像是

//a[@innerHTML='Logout']
Run Code Online (Sandbox Code Playgroud)

这是对的吗?

html xpath innerhtml

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

构建器模式:确保对象完全构建

例如,如果我有一个构建器,那么我可以像这样创建对象:

Node node = NodeBuilder()
            .withName(someName)
            .withDescription(someDesc)
            .withData(someData)
            .build();
Run Code Online (Sandbox Code Playgroud)

如何确保在构建方法之前已经设置了用于构建对象的所有变量?

例如:

Node node = NodeBuilder()
            .withName(someName)
            .build();
Run Code Online (Sandbox Code Playgroud)

不是一个有用的节点,因为尚未设置描述和数据.

我使用构建器模式的原因是因为没有它,我需要很多构造函数的组合.例如,可以通过获取Field对象来设置名称和描述,并且可以使用文件名设置数据:

Node node = NodeBuilder()
            .withField(someField) //Sets name and description 
            .withData(someData) //or withFile(filename)
            .build(); //can be built as all variables are set
Run Code Online (Sandbox Code Playgroud)

否则将需要4个构造函数(字段,数据),(字段,文件名),(名称,描述,数据),(名称,描述,文件名).当需要更多参数时会变得更糟.

这些"方便"方法的原因是因为必须构建多个节点,因此它可以节省大量重复的行,如:

Node(modelField.name, modelField.description, Data(modelFile)),
Node(dateField.name, dateField.description, Data(dateFile)),
//etc
Run Code Online (Sandbox Code Playgroud)

但是在某些情况下,需要使用非来自文件的数据构建节点,和/或名称和描述不基于字段.也可能有多个节点共享相同的值,因此不是:

Node(modelField, modelFilename, AlignLeft),
Node(dateField, someData, AlignLeft),
//Node(..., AlignLeft) etc
Run Code Online (Sandbox Code Playgroud)

你可以有:

LeftNode = NodeBuilder().with(AlignLeft);

LeftNode.withField(modelField).withFile(modelFilename).build(),
LeftNode.withField(dateField).withData(someData).build()
Run Code Online (Sandbox Code Playgroud)

所以我认为我的需求与构建器模式非常匹配,除了构建不完整对象的能力.由于上述原因,"在构造函数中放置必需参数并具有可选参数的构建器方法"的正常建议不适用于此处.

实际问题:如何在编译时调用构建之前确保已设置所有参数?我正在使用C++ 11.

(在运行时,我可以为每个参数设置一个标志位,并声明所有标志都在构建中设置)

或者是否有一些其他模式来处理大量的构造函数组合?

c++ builder builder-pattern c++11

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

盐,密码和安全

我已经阅读了很多有关此问题的问题,但许多答案相互矛盾或者我不理解.

您应该始终将密码存储为哈希,而不是纯文本.但是,您应该在数据库中的散列密码+ salt旁边存储salt(每个用户都是唯一的).这对我来说似乎不是很聪明,因为无法有人访问数据库,查找称为Admin或其他任何帐户,然后从中计算出密码?

security passwords salt

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

将Tester添加到TestFlight

如果我将测试仪添加到TestFlightApp.com,他们会获得一个注册其设备的链接.然后,这将下载一个名为TestFlight Access的配置文件.不是我的应用程序.

这个配置文件是什么以及它与我的应用程序有什么关系?

我还需要将测试者的UDID添加到Apple开发人员门户吗?

iphone iphone-developer-program testflight

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

为什么要使用mem_fn?

我很困惑为什么std::mem_fn需要.

我有一个函数,它接受任何可调用的(lambda,函数指针等),并将它绑定到一个参数.

例如:

template<class T>
void Class::DoBinding(T callable) {
  m_callable = std::bind(callable, _1, 4);
}
//somewhere else
Item item;
m_callable(item);
Run Code Online (Sandbox Code Playgroud)

我见过的所有代码示例都是:

//some defined member function
Item::Foo(int n);

DoBinding(std::mem_fn(&Item::Foo));
Run Code Online (Sandbox Code Playgroud)

为什么不能简单地:

DoBinding(&Item::Foo);
Run Code Online (Sandbox Code Playgroud)

似乎后者可以调用而不必使用std :: mem_fn,那么为什么需要呢?

c++ stdbind c++11

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