我有一个包含多个字段的数据库
word_id — INTEGER PRIMARY_KEY
word — TEXT
...
Run Code Online (Sandbox Code Playgroud)
..和~150k行.
由于这是一本字典,我正在'search_string%'使用LIKE 搜索带掩码的单词.它曾经工作得很好,需要15ms才能找到匹配的行.该表具有字段的索引'word'.最近我修改了表(该表的一些字段超出了范围)并发生了一些事情 - 执行查询需要400ms,所以我理解它现在无法使用索引.使用=而不是like的直接查询显示10ms的结果.有人知道这里发生了什么吗?
我有一个协议,其中定义了一个函数,函数的返回类型是a SuperclassType.
在符合协议的类中,我试图定义此函数,但具有SubclassType返回类型.
编译器告诉我,这个类不符合协议,因为很明显SubclassType!=SuperclassType
protocol SomeProtocol {
func someFunction(someParameter:SomeType) -> SuperclassType?
}
class SomeClass : SomeProtocol {
func someFunction(someParameter:SomeType) -> SubclassType? {
...
}
}
class SubclassType : SuperclassType { }
Run Code Online (Sandbox Code Playgroud)
但是,常识告诉我,这SubclassType应该是一个合适的替代品SuperclassType.
我究竟做错了什么?
谢谢.
在这里我得到了一些丑陋的代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
NSDate *date = [NSDate date];
NSString *textWithYear = [NSString stringWithFormat:@"text and year %@", [dateFormatter stringFromDate:date] ];
[dateFormatter release];
NSLog(@"%i", [dateFormatter retainCount]); // returns 1 !
Run Code Online (Sandbox Code Playgroud)
如您所见,保留计数器返回1,我想这意味着该对象未被释放.如果我将该字符串更改为
[dateFormatter release], dateFromatter = nil;
Run Code Online (Sandbox Code Playgroud)
保留计数器返回0,这应该是因为它无法计算nil的保留:)
有什么东西我不了解保留计数器,或者这个对象真的没有发布?当我release第二次发送它(努力获得零保留计数)时,它会预期粉碎:)
还有一个问题:如果dateFormatter真的被释放了,为什么当我调用[dateFormatter retainCount]时它不会崩溃?
cocoa ×1
null ×1
objective-c ×1
oop ×1
protocols ×1
retaincount ×1
sql ×1
sql-like ×1
sqlite ×1
swift ×1