我正在使用#include<iostream>
#include<cstring>
using namespace std;
class String{
private:
char* str;
size_t len;
public:
String(char* str){
len=sizeof(str)/sizeof(char);
this->str=new char[(int)len];
strcpy(this->str,str);
}
String(const String& s){
if(str!=s.str)
{
strcpy(str,s.str);
len=s.len;
}
}
friend void M::print(String);//This line gives compile time error saying M does not exists.
// friend class M;//This line on the other hand works completely fine when uncommented
};
class M{
public:
void print(String s){
cout<<s.str;
}
};
int main()
{
char x[6]={'H','e','l','l','o','\0'};
String str=x;
M a;
a.print(str);
return 0;
}
来缓存对象。有没有办法一次删除所有缓存?
我正在使用以下方法进行缓存:
NSCache
但是我看到“文档和数据”部分随时间增加(目前为140MB以上)。我尝试使用以下方法清除缓存,但没有成功:
class VC: UIViewController {
static let userCache = NSCache<NSString, User>()
func getUser(fromId id: String, completion: @escaping (_ user: User) -> Void) {
if let cachedVersion = VC.userCache.object(forKey: id as NSString) {
print("using cached user from id")
completion(cachedVersion)
return
}
// retrieve new instance of object
}
}
是否可以检索VC.userCache.removeAllObjects()
的旧实例,因此不必每次加载应用程序时都创建一个新实例?还是有一种方法可以在应用加载时删除所有缓存的对象?
答案 0 :(得分:0)
您的意思是removeAllObjects()不起作用?您确定正在使用的内存来自此缓存吗?如果缓存由多个ViewController使用,则应在这些ViewController之外创建和管理该缓存,以免创建多个实例,例如CacheManager类或类似的东西。
您还可以在缓存上设置countLimit和totalCostLimit属性,以使其大小不会膨胀。