- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在这里构建RSS阅读器,当用户读完文章并按回时,dealloc不会被调用的问题
我得到了retainCount 6,有时甚至是7!
我有很多定制面板
当按下后退按钮时, View 会弹出并且没有调用 dealloc?!
.h 文件:
@interface ArticalViewController : UIViewController<UIWebViewDelegate,UIScrollViewDelegate,UIActionSheetDelegate,ArticalBottomPanelDelegate,ArticalContentFetcherDelegate> {
UIWebView * description_;
UIActivityIndicatorView * ind_;
ArticalModel * artical_;
NSString * content;
UIButton * faceBookShareBtn_;
UIBarButtonItem * btnSharePanel_;
CustomTopToolBar * topToolbar_;
ArticalBottomPanel* articalBottomPanel_;
MovingSharePanel * movingSharePanel_;
int fontSize;
BOOL favoStatus;
ArticalContentFetcher *datafetcher_;
}
@property (nonatomic,retain) IBOutlet UIWebView * description;
@property (nonatomic,retain ) IBOutlet UIActivityIndicatorView * ind;
@property (nonatomic,retain) ArticalModel * artical;
@property (nonatomic,retain) IBOutlet UIButton * faceBookShareBtn;
@property (nonatomic,retain) IBOutlet CustomTopToolBar * topToolbar;
@property (nonatomic , retain) IBOutlet ArticalBottomPanel * articalBottomPanel;
@property (nonatomic , retain) IBOutlet MovingSharePanel * movingSharePanel;
@property (nonatomic , retain) ArticalContentFetcher *datafetcher;
-(void) loadArtical:(ArticalModel * )artical;
- (void) loadArticalContentFromInternet;
-(void) changeFavoriteBtnIcon:(BOOL) status;
-(void)backBtnPressed:(id) sender;
-(IBAction)openPostBtnPressed:(id)sender;
@end
.m 文件:
#import "ArticalViewController.h"
@implementation ArticalViewController
@synthesize description=description_;
@synthesize artical=artical_;
@synthesize ind=ind_;
@synthesize faceBookShareBtn=faceBookShareBtn_;
@synthesize topToolbar=topToolbar_;
@synthesize articalBottomPanel=articalBottomPanel_;
@synthesize movingSharePanel=movingSharePanel_;
@synthesize datafetcher=datafetcher_;
- (void)dealloc
{
NSLog(@"ArticalViewController : dealloc");
[description_ release];
[ind_ release];
[artical_ release];
[content release];
[faceBookShareBtn_ release];
[btnSharePanel_ release];
[topToolbar_ release];
[articalBottomPanel_ release];
[movingSharePanel_ release];
[datafetcher_ release];
[super dealloc];
}
#pragma mark -
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
fontSize=100;
[self.articalBottomPanel setDelegate:self];
[self.movingSharePanel setArtical:self.artical];
[self.movingSharePanel setParentView:self];
[self.topToolbar.rightButon setFrame:CGRectMake(260 , 3, 50, 30)];
[self.topToolbar.rightButon addTarget:self action:@selector(backBtnPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.topToolbar.rightButon setImage:[UIImage imageNamed:@"back-button"] forState:UIControlStateNormal];
[self.topToolbar.leftButon setFrame:CGRectMake(10 , 3, 50, 30)];
[self.topToolbar.leftButon setImage:[UIImage imageNamed:@"button-toolbar-post-link"] forState:UIControlStateNormal];
[self.topToolbar.leftButon addTarget:self action:@selector(openPostBtnPressed:) forControlEvents:UIControlEventTouchUpInside];
self.topToolbar.label.text =self.artical.category;
// [label release];
//Navigation Buttons
self.navigationItem.hidesBackButton=YES;
//Check if artical is favorited or not
[self changeFavoriteBtnIcon:[Favorites chechArtical:self.artical]];
[self.description setBackgroundColor:[UIColor clearColor]];
[self.description setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"1px-post-views-background"]]];
if([[self.artical content] length] >1){
NSLog(@"[[self.artical content] length] >1");
[self loadArtical:self.artical];
}else {
NSLog(@"else");
self.datafetcher=[[ArticalContentFetcher alloc ]init ];
[self.datafetcher setArticalContentFetcherDelegate:self];
[NSThread detachNewThreadSelector:@selector(loadArticalContentFromInternet) toTarget:self withObject:nil];
}
}
#pragma mark -
#pragma mark ArticalConnectionFeed Delegate Methods
-(void) articalContentConnectionDoneWithArtical:(ArticalModel *)artical {
NSLog(@"articalContentConnectionDoneWithArtical");
[self loadArtical:artical];
}
-(void) articalContentConnectionFailed{
NSLog(@"articalContentConnectionFailed");
}
#pragma mark -
#pragma mark ArticalBottomPanelDelegate Delegate Methods
-(void) openPanelFired{
NSLog(@"openPanelFired");
[self.movingSharePanel movePanel];
// [self.articalBottomPanel.btnOpenSharePanel setHidden:YES];
}
-(void) fontBtnFired:(int)font{
// NSLog(@"fontBtnFired : %d",font);
if(font==1){
[self.description stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '90%'"];
}else {
[self.description stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '-10%'"];
}
}
-(void) favoBtnFired {
NSLog(@"favoBtnFired");
favoStatus=[Favorites processArtical:self.artical];
[self changeFavoriteBtnIcon:favoStatus];
}
-(void) changeFavoriteBtnIcon:(BOOL) status{
if (status){
[self.articalBottomPanel.btnFavo setImage: [UIImage imageNamed:@"active-star.png"] forState:UIControlStateNormal];
}else {
[self.articalBottomPanel.btnFavo setImage: [UIImage imageNamed:@"star.png"] forState:UIControlStateNormal];
}
}
#pragma mark -
#pragma mark UIWebView Delegate Methods
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if([InternetConnection getInternetStatus]){
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
return YES;
}else {
[InternetConnection ShowNoInternetAlert];
return NO;
}
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[self.ind stopAnimating];
}
#pragma mark -
#pragma mark Class Methods
-(void) loadArtical:(ArticalModel * )artical{
NSLog(@"loadArtical");
[self.artical setContent:[artical content]];
[self.artical setCategory:[artical category]];
NSString * style=[[NSString alloc ] initWithFormat:@"<style> #offline img{display:none;} .wrap{text-align:right;line-height:22px; direction:rtl;} .title{font-size:20px;margin-bottom:5px;} .date{font-size:13px;} .cat{font-size:13px;} </style>"];
if([InternetConnection getInternetStatus])
NSLog(@"[InternetConnection getInternetStatus] : true");
content=[[NSString alloc] initWithFormat:@"%@<div class='wrap' ><div class='title'>%@</div><div class='date'>%@</div><div class='cat'>%@</div>%@</div>",style,[self.artical title],[DateProcessor getInternetDateAndTimeForArticals:self.artical.pubDate],[self.artical category],[self.artical content] ];
[ self.description loadHTMLString:content baseURL:[NSURL URLWithString:@""]];
[style release];
}
- (void) loadArticalContentFromInternet{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self.datafetcher loadArticlContentWithID:self.artical.ID];
[[NSRunLoop currentRunLoop] run ];
[pool release];
}
-(void)backBtnPressed:(id) sender{
NSLog(@"backBtnPressed");
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark -
#pragma mark IBActions
-(IBAction)openPostBtnPressed:(id)sender{
if([InternetConnection getInternetStatus]){
[InternetConnection openExternalUrl:self.artical.link];
}else{
[InternetConnection ShowNoInternetAlert];
}
}
@end
添加:
当我调用 Artical 时,我使用了
avc=[[ArticalViewController alloc]initWithNibName:@"ArticalViewController" bundle:nil];
avc.artical=[self.feeds objectAtIndex:indexPath.row];
[self.navCon pushViewController:avc animated:YES];
[avc release];
最佳答案
我发现跟踪保留计数和丢失保留-释放对的最佳方法是使用仪器。点击配置文件 (Cmd ⌘+I) 并选择Leaks模板。即使不会自动发现泄漏,也会记录保留更改,以便您可以手动跟踪其他保留。为此,请在选择分配工具时在对象摘要中找到您的类名称。如果找不到它,则意味着所有实例都已释放。否则,单击选择类名称时出现的箭头: 您将看到您类(class)的所有事件实例:
如果您认为某些实例应该已经释放,请选择一个实例并单击对象地址旁边出现的箭头。现在,您应该看到使用执行此操作的方法名称对此对象调用的任何保留或释放:
RefCt 列显示调用操作后的保留计数,当您双击任何保留/释放时,仪器将显示执行此操作的代码行:
如您所见,对象被添加到数组中并且永远不会从数组中删除。
根据我的经验,这是查找Leaks工具无法自动检测到的内存泄漏的最快、最简单的方法。我认为另一个好的做法是查看对象摘要中的#Living,以确保事件实例的数量完全符合您的预期。
关于iphone - 我的retainCount 增加了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7695425/
我需要从 1024 增加 FD_SETSIZE 值至 4096 .我知道最好使用 poll()/epoll()但我想了解什么是优点/缺点。主要问题是:我要重新编译glibc吗? ?我读了几个线程,其中
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我在 HTML 文件中有这样的内容: var value = 0; add(x){ x++; do
有没有办法在用户向上滚动时增加变量,并在用户使用 JavaScript 向下滚动时减少变量?变量没有最大值或最小值,如果能够调整灵敏度就好了。我不知道从哪里开始,感谢您的帮助! 编辑:没有滚动条,因为
我是 ios 新手,遇到以下问题。 我想根据表格 View 中元素的数量增加和减少表格 View 的高度大小。如果在输入时客户端在输出时给出 3 个或超过 3 个元素,我希望看到一个比默认行大 2 行
所以我一直在四处搜索,似乎大多数人认为以下列方式递增 indexPath 是正确的方法: NSIndexPath *newIndexPath = [NSIndexPath indexPathForRo
我有一个关于 connSupervisionTimeout 的问题。 我正在使用 CoreBluetooth 编写应用程序。我检查了连接参数和 connSupervisionTimeout = 720
我正在尝试根据页面的滚动位置更改元素的填充;当用户向下滚动页面时,填充会增加,而当他们向上滚动时,填充会减少。 我的主要问题是滚动不是很流畅,有时如果我滚动到页面顶部太快,每次元素的填充大小都不一样。
我正在尝试计算 18456 个基因的相关性度量,但编译器 (Dev C) 在将宏 GENE 或 INDEX 增加到 4000 到 5000 之间的值后退出或大。例如,它适用于: # define GE
我有一个带有 position: absolute 和 CSS3 过渡的圆形元素(a 元素)。在 hover 事件中,我想增加圆的高度和宽度,但我想在所有边上添加像素,而不仅仅是在左侧或右侧。 示例如
为了改善用户体验,我计划在我网站的所有页面(A-、A、A+)上增加/减少/重置字体大小 我面临的问题是页面上不同元素使用的字体大小不统一。有些是 14px,有些是 18px,有些是 12px,有些是
本文实例讲述了Yii框架数据库查询、增加、删除操作。分享给大家供大家参考,具体如下: Yii 数据库查询 模型代码: ?
sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符。 命令总解:update 表的名称 set 此表要替换的字段名=REPLACE(此表要替换的字段名, '原
sql不常用函数总结以及事务,增加,删除触发器 distinct 删除重复行 declare @x 申明一个变量 convert(varchar(20),t
要增加我使用的最大可用内存: export SPARK_MEM=1 g 或者我可以使用 val conf = new SparkConf() .setMaster("loca
我正在尝试将文本(自定义文本按钮)放入 AppBar 的前导属性中。但是,当文本太长时,文本会变成多行 Scaffold( appBar: AppBar( centerTi
我正在使用最新版本的 NetBeans,我需要增加输出和菜单的字体大小(不是代码部分)。我试过: netbeans_default_options=".... --fontsize 16" 但是当我将
我必须将 180000 个点绘制到一个 EPS 文件中。 使用标准 gnuplot 输出尺寸点彼此太接近,这使得它们无法区分。有没有办法增加图像的宽度和高度? 最佳答案 是的。 set termina
我有一个带有输入字段的 twitter bootstrap 3 导航栏。我想增加输入字段的宽度。我已尝试设置 col 大小,但它不起作用。 html比较长,请引用bootply http://www.
我正在尝试增加 ggplot 标题中下划线的大小/宽度/厚度。我曾尝试使用大小、宽度和长度,但没有成功。 这是我所做的一个例子。 test <- tibble(x = 1:5, y = 1, z =
我是一名优秀的程序员,十分优秀!