小编Joh*_*ith的帖子

UIView和NSTimer没有释放内存

我在UIView中有一行UILabel文本,它通过NSTimer定期更新.这段代码应该经常在屏幕底部附近写一个状态项.数据来自其控制之外.

我的应用程序内存耗尽非常快,因为似乎UILabel没有被释放.似乎dealloc从未被调用过.

这是我的代码的一个非常压缩的版本(为清楚起见,删除了错误检查等).

文件:SbarLeakAppDelegate.h

#import <UIKit/UIKit.h>
#import "Status.h"

@interface SbarLeakAppDelegate : NSObject 
{
    UIWindow *window;
Model *model;
}
@end
Run Code Online (Sandbox Code Playgroud)

文件:SbarLeakAppDelegate.m

#import "SbarLeakAppDelegate.h"

@implementation SbarLeakAppDelegate
- (void)applicationDidFinishLaunching:(UIApplication *)application 
{       
    model=[Model sharedModel];

    Status * st=[[Status alloc] initWithFrame:CGRectMake(0.0, 420.0, 320.0, 12.0)];
    [window addSubview:st];
    [st release];

    [window makeKeyAndVisible];
}

- (void)dealloc 
{
    [window release];
    [super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)

文件:Status.h

#import <UIKit/UIKit.h>
#import "Model.h"

@interface Status : UIView 
{
    Model *model;
    UILabel * title;
}
@end
Run Code Online (Sandbox Code Playgroud)

文件:Status.m这就是问题所在.UILabel似乎没有被释放,并且很可能是字符串.

#import "Status.h"

@implementation Status

- (id)initWithFrame:(CGRect)frame 
{
self=[super …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa objective-c nstimer uiview

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

在iPhone上优化SQLite3

我有一个使用SQLite3的应用程序.它运行得很好,但我想加快SQLite(写)访问的建议.大多数数据库操作都是写三元组(int,int,double),每秒大约20-50三倍.偶尔会有读数,但与母鸡的牙齿一样罕见(主要发生在装载时).

有没有人有关于优化(或者至少是去消极化)代码的建议?我错过了任何SQLite3快捷方式?(由于程序中的其他内容,使用CoreData是正确的.)

我在初始化期间准备语句st1.它是由准备

const char *sql = "insert into historic values (?, ?, ?)";
if (sqlite3_prepare_v2(database, sql, -1, &st1, NULL) == SQLITE_OK) ....
Run Code Online (Sandbox Code Playgroud)

这个准备是一次性的.我用于保存的代码段如下(为清晰起见,我已删除了错误检查).

-(BOOL) saveHvalue:(int) fid time:(int) t value:(double) v type:(int) ftype
{
    {
        sqlite3_bind_int(st1, 1, fid);
        sqlite3_bind_int(st1, 2, t);
        sqlite3_bind_int(st1, 3, ftype);

        sqlite3_step(st1);
        sqlite3_reset(st1);
        sqlite3_clear_bindings(st1);
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

sqlite iphone objective-c

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

标签栏限制?

有没有办法将iphone标签栏中的项目数增加到五个以上?我知道它可以创建一个"更多..."选项卡,但对于另外一个选项卡似乎过多.

我有一个需要六个的应用程序(或者我将需要做一些深度冥想来摆脱一个).

iphone uitabbarcontroller

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

以编程方式切换iPhone中的标签

我有一个iphone应用程序,有大约4个选项卡.如何强制程序在第二个选项卡上启动?

目前我已经切换了第一个和第二个标签,但美学是可怕的.

iphone cocoa-touch objective-c

0
推荐指数
1
解决办法
585
查看次数

如何在没有实例化对象的情况下调用方法

这是一个客观问题.

我想在一个对象中调用一个方法,但是没有对象的实例化.这可能吗?

我想调用的方法不是类方法.

iphone cocoa objective-c

0
推荐指数
1
解决办法
972
查看次数

退出iPhone上的视图

我如何以编程方式退出iPhone应用程序中的视图

iphone uiview

0
推荐指数
1
解决办法
1006
查看次数

自定义迭代器:如何跟踪它?

我有这种情况:

我有一个跟踪指针数组的类.我构建了一个循环遍历此数组的自定义迭代器.

我的问题是如何使其线程安全,特别是在递增/递减时?

以下是我所拥有的相关部分的草稿:

typedef fruit * iterator;

class fruits
{
  private:
    fruit ** flist;
    int n;     //keeps track of position in flist
    int count; //number of fruits

  public:
    iterator begin() {n=0; return fruit[n];}
    iterator end() {n=count; return fruit[n];}

    iterator operator++ ()
    {
      return fruit[++n];
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到的问题是,如果程序的两个部分创建迭代器,则事情将无法工作.C++ STL如何处理它?

更新:我发现了我的方式错误.迭代器应该跟踪它自己的位置.为此,我创建了一个嵌入在我的主类中的迭代器类.生活现在很好.

c++ templates iterator stl

0
推荐指数
1
解决办法
752
查看次数