如果我创建一个视图,并将其添加为子视图并将其添加到数组中,我是否必须将其释放两次?
UIView* cat = [[UIView alloc] initWithFrame:someFrame];
[self.view addSubview:cat];
[self.animals addObject:cat];
[cat release];
[cat release];
Run Code Online (Sandbox Code Playgroud)
有两个发布声明对我来说似乎很奇怪,我没有看到人们这样做.但是在这种情况下,保留计数不会增加2吗?
希望有办法做到这一点.想只显示视图周围的边框,顶部没有40px标题栏.可能?
有时会调用didReceiveMemoryWarning,但viewDidUnload不会.在我的情况下,我想在调用didReceiveMemoryWarning时强制viewDidUnload.
我可以这样说:
[self viewDidUnload];
Run Code Online (Sandbox Code Playgroud)
但这真的会卸载观点吗?没有自己的"unloadView".
这段代码有什么问题?
在界面中:
NSArray *myImages;
@property (nonatomic, retain) NSArray *myImages;
Run Code Online (Sandbox Code Playgroud)
执行:
NSArray *array = [NSArray arrayWithObjects:
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]],
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2.png"]],
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image3.png"]],
nil];
self.myImages = array;
[array release];
Run Code Online (Sandbox Code Playgroud)
如果我在初始化后立即记录myImages,它会正确记录UIImageViews数组.但是,稍后在应用程序中,当我尝试从不同的方法访问self.myImages时,我得到EXC_BAD_ACCESS.它将保留在界面中.问题是什么?
有人能用英语解释这里发生了什么吗?
std::vector<Cat*> cats; //I get that cats is a vector of Cat objects
if (std::find(cats.begin(), cats.end(), morris) == cats.end()) {
cats.push_back(morris);
}
Run Code Online (Sandbox Code Playgroud)