我一直在开发一个使用UIToolbar的iPhone应用程序(在UINavigationController的上下文中),在屏幕底部显示一个小状态图标.工具栏最终还会有与之关联的动作图标(想想邮件应用程序).
我遇到了一个问题,即每个推到导航控制器堆栈上的UIViewController都应该有自己的一组项目供工具栏显示,结果,"状态"项目淡出并重新进入每个视图转换.
有没有办法在工具栏中有一个持久性项目?我也尝试在导航控制器的初始化程序中添加项目(我为此方法划分了UINavigationController),但它仍然没有.
我在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',但现在我真的很好奇.
谢谢
我正在构建一个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.
我最近发现自己编写了一段执行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程序员,其中可用的内存/处理能力有限)可以手工完成其他优化,而不是信任编译器?
我正在使用DataMapper和Sinatra构建一个小型Ruby应用程序,我正在尝试定义一个基本的博客模型:
由于每个评论belongs_to帖子的事实,我很难在评论之间找到自我参照关系.我的课程现在看起来像这样:
class User
include DataMapper::Resource
property :id, Serial
property :username, String
property :password, String
has n, :post
endRun Code Online (Sandbox Code Playgroud)
class Post
include DataMapper::Resource
property :id, Serial
property :content, Text
belongs_to :user
has n, :comment
endRun Code Online (Sandbox Code Playgroud)
class Comment
include DataMapper::Resource
property :id, Serial
property :content, Text
belongs_to :user
belongs_to :post
endRun Code Online (Sandbox Code Playgroud)
我正在关注协会的指南并构建一个新对象(CommentConnection)以将两个注释链接在一起,但我的问题是每个子注释不应属于Comment类隐含的Post.
我的第一直觉是为Comments提取一个超类,这样一个子类可以是"顶级"并属于一个帖子,而另一种类型的注释属于另一个注释.不幸的是,当我这样做时,我遇到的问题是注释ID变为空.
在DataMapper中建模这种递归注释关系的最佳方法是什么?
cocoa ×3
objective-c ×3
datamapper ×2
iphone ×2
ruby ×2
sinatra ×2
autorelease ×1
optimization ×1
performance ×1
recursion ×1
uikit ×1
validation ×1