小编Tim*_*Tim的帖子

UIToolbar中的持久UIBarButtonItem?

我一直在开发一个使用UIToolbar的iPhone应用程序(在UINavigationController的上下文中),在屏幕底部显示一个小状态图标.工具栏最终还会有与之关联的动作图标(想想邮件应用程序).

我遇到了一个问题,即每个推到导航控制器堆栈上的UIViewController都应该有自己的一组项目供工具栏显示,结果,"状态"项目淡出并重新进入每个视图转换.

有没有办法在工具栏中有一个持久性项目?我也尝试在导航控制器的初始化程序中添加项目(我为此方法划分了UINavigationController),但它仍然没有.

iphone cocoa objective-c uikit

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

"有效"是DataMapper中的保留名称吗?

我在datamapper中有以下模型:

class Student
  include DataMapper::Resource
  property :id,          Serial
  # <snip>
  property :permissions, String, :accessor => :protected, :required => true, :default => 'standard'
  property :valid,       Boolean, :default => false, :required => true
  # <snip>
end
Run Code Online (Sandbox Code Playgroud)

在要求'dm-validations'(版本1.1.0)并启动我的Sinatra应用程序后,我收到以下消息:

/Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:81:in `valid?': wrong number of arguments (1 for 0) (ArgumentError)
    from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:81:in `save_self'
    from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:1007:in `_save'
    from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:1223:in `run_once'
    from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:1006:in `_save'
    from /Library/Ruby/Gems/1.8/gems/dm-core-1.1.0/lib/dm-core/resource.rb:406:in `save'
    from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:69:in `save'
    from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations/support/context.rb:30:in `validation_context'
    from /Library/Ruby/Gems/1.8/gems/dm-validations-1.1.0/lib/dm-validations.rb:69:in `save'
<snip>

我正在为我的模型使用的"有效"名称是保留字吗?如果是,我在哪里可以找到这些单词.我接下来试着给它命名:'student_valid',但现在我真的很好奇.

谢谢

ruby validation datamapper sinatra

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

NSAutoreleasePool携带方法?

我正在构建一个iPhone应用程序,我在其中分离一些线程以在后台执行长时间运行的工作,以免挂起UI.我知道线程需要NSAutoreleasePool实例进行内存管理.我不确定的是,如果thread方法调用另一个方法 - 该方法是否还需要NSAutoreleasePool?

示例代码:

- (void)primaryMethod {
    [self performSelectorInBackground:@selector(threadedMethod) withObject:nil];
}

- (void)threadedMethod {
    NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc] init];

    // Some code here

    [self anotherMethod];

    // Maybe more code here

    [aPool drain];
}

- (void)anotherMethod {
    // More code here
}
Run Code Online (Sandbox Code Playgroud)

我问的原因是我收到错误,对象正在自动释放,没有池,并且"只是泄漏".

我已经看到其他问题,人们根本没有自动释放池,我理解为什么需要自动释放池.我特别感兴趣的是找出在(在这个例子中)创建的自动释放池是否threadedMethod适用于在其中创建的对象anotherMethod.

iphone cocoa memory-management objective-c autorelease

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

Cocoa/Objective-C:我自己应该做多少优化?

我最近发现自己编写了一段执行Core Data fetch的代码,然后分配了两个可变数组,初始容量等于fetch返回的结果数:

// Have some existing context, request, and error objects
NSArray *results = [context executeFetchRequest:request error:&error];

NSMutableArray *firstArray = [[[NSMutableArray alloc] 
                               initWithCapacity:[results count]] autorelease];
NSMutableArray *secondArray = [[[NSMutableArray alloc] 
                                initWithCapacity:[results count]] autorelease];
Run Code Online (Sandbox Code Playgroud)

我写完之后再次看了一遍,有些事让我感到奇怪:我打了[results count]两次电话.结果集可能非常大(数百个,也许是一千个对象).

我的第一个问题是打破[results count]一个单独的NSUInteger,然后使用该整数作为每个数组的容量.我的问题:这种手工优化是否必要?编译器是否会识别它正在运行[results count]两次而只是保持该值而不必显式指定该行为?或者它会运行两次方法 - 这可能是一项代价高昂的操作?

类似地,程序员(特别是iPhone程序员,其中可用的内存/处理能力有限)可以手工完成其他优化,而不是信任编译器?

optimization performance cocoa objective-c

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

DataMapper子类化和多对多自引用关系

我正在使用DataMapper和Sinatra构建一个小型Ruby应用程序,我正在尝试定义一个基本的博客模型:

  • 该博客有多个用户
  • 我有一组帖子,每个帖子都由用户发布
  • 每个帖子都有一组评论
  • 每个评论都可以有自己的评论集 - 这可以重复几个层次

由于每个评论belongs_to帖子的事实,我很难在评论之间找到自我参照关系.我的课程现在看起来像这样:

class User
  include DataMapper::Resource
  property :id, Serial
  property :username, String
  property :password, String

  has n, :post
end
Run Code Online (Sandbox Code Playgroud)
class Post
  include DataMapper::Resource
  property :id, Serial
  property :content, Text

  belongs_to :user

  has n, :comment
end
Run Code Online (Sandbox Code Playgroud)
class Comment
  include DataMapper::Resource
  property :id, Serial
  property :content, Text

  belongs_to :user
  belongs_to :post
end
Run Code Online (Sandbox Code Playgroud)

我正在关注协会的指南并构建一个新对象(CommentConnection)以将两个注释链接在一起,但我的问题是每个子注释不应属于Comment类隐含的Post.

我的第一直觉是为Comments提取一个超类,这样一个子类可以是"顶级"并属于一个帖子,而另一种类型的注释属于另一个注释.不幸的是,当我这样做时,我遇到的问题是注释ID变为空.

在DataMapper中建模这种递归注释关系的最佳方法是什么?

ruby recursion datamapper sinatra

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