我使用OCMock创建了一个模拟UINavigationController.但是,我不能将它分配给UIViewController的navigationController属性,因为该属性是只读的.
id mockNavController = [OCMockObject mockForClass:[UINavigationController class]];
...
myViewController.navigationController = mockNavController; // readonly!Run Code Online (Sandbox Code Playgroud)
这篇博文的作者声称找到了一个解决方案,却忽略了分享它.
我想通过选项卡式界面编写一个可能在一个窗口中有多个文档的应用程序.我应该避免使用NSDocument架构(基于Cocoa文档的应用程序模板)吗?据我所知,它每个文档只支持一个或多个窗口,反之则不然.
我已经和这个问题争论了一段时间,并且已经在NSDocument架构上构建了我的大部分应用程序但是我无法想出一个将多个文档与单个窗口相关联的好方法.
编辑:除了基本的文档窗口,我想要项目文档窗口.在这种复杂程度上,还是值得攻击NSDocument架构吗?Apple是否使用NSDocument架构编写Xcode(以这种方式工作)?
我有一个基于视图的NSTableView.我将textField其他元素NSTableCellView放在Interface Builder中的autolayout中.如何根据自动布局参数获取单元格的高度?
这个答案是我找到的最接近我要找的东西,但它是为iOS编写的,并且该systemLayoutSizeFittingSize方法不存在NSView.
我想用线性CGGradient填充我通过Core Graphics绘制的多边形形状.CGContextDrawLinearGradient函数从一个点到另一个点绘制渐变,但它填充整个视图.如何仅在我绘制的多边形内部显示渐变?
我不理解Programming Perl 3e的这个函数的最后一行.
以下是通过返回传递给它的所有哈希中发生的键列表,编写一个执行某种集合交集的函数的方法:
Run Code Online (Sandbox Code Playgroud)@common = inter( \%foo, \%bar, \%joe ); sub inter { my %seen; for my $href (@_) { while (my $k = each %$href) { $seen{$k}++; } } return grep { $seen{$_} == @_ } keys %seen; }
我知道这%seen是一个哈希,它将每个键映射到在为函数提供的任何哈希中遇到的次数.
我最近发现UIViews应该只有UIViewController当它们填满整个窗口时(或由另一个UIViewController如a UINavigationController或管理UISplitViewController).此引用来自UIViewController的文档:
您不应该使用视图控制器来管理仅填充其窗口一部分的视图 - 即,只是应用程序内容矩形定义的区域的一部分.如果您希望有一个由几个较小视图组成的界面,请将它们全部嵌入到单个根视图中,并使用视图控制器管理该视图.
我通常将我的视图逻辑放在UIView中,即使它是由UIViewController管理的,但我经常发现自己需要访问UIViewController的属性,例如它的navigationController属性.但是,UIViews不应该知道他们的UIViewController.
我的结论是视图逻辑应该存在于UIView的UIViewController中,否则存在于UIView本身.
或者,更好的做法是为视图创建一个控制器类,而该视图不是 UIViewController的子类?UIPopoverController(一个NSObject子类)似乎遵循这种模式,尽管在大多数情况下(UIButton等)视图似乎没有专用的控制器类.
model-view-controller cocoa-touch design-patterns uiviewcontroller ios
我有许多类似于以下的功能:
+ (NSArray *)arrayOfSomething
{
NSMutableArray *array = [NSMutableArray array];
// Add objects to the array
return [[array copy] autorelease];
}Run Code Online (Sandbox Code Playgroud)
我的问题是关于这个方法的最后一行:返回可变对象并避免复制操作或返回不可变副本是否更好?是否有任何充分的理由避免返回一个不可预期的可变对象?
(我知道返回NSMutableArray是合法的,因为它是NSArray的子类.我的问题是这是否是一个好主意.)
Xcode 4静态分析器将此方法标记为具有过度释放的返回值,而在这种情况下似乎并非如此.
- (id)copyWithZone:(NSZone *)zone
{
return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString];
}
Run Code Online (Sandbox Code Playgroud)
有一个箭头从return关键字指向它后面的表达式,另一个从该表达式指向分析器警告.这是静态分析:
静态分析仪是否不正确或此代码有问题?
根据要求,-initWithURL:postString:方法:
- (id)initWithURL:(NSURL *)u postString:(NSString *)p
{
if ( (self = [super init]) )
{
self.url = u;
self.postString = p;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
即使在清理和重建项目后,我仍然会收到此警告.
更新:升级到Xcode 4.2后,Xcode静态分析器不再将此标记为问题.
我正在为Mac OS X编写一个文本编辑器.我需要在NSTextView中显示隐藏的字符(例如空格,制表符和特殊字符).我花了很多时间寻找如何做到这一点,但到目前为止我还没有找到答案.如果有人能指出我正确的方向,我将不胜感激.
我有一些用Java编写Web应用程序的经验.我的第一个项目使用Servlets,第二个项目使用Stripes框架.
但是,我觉得我错过了Java Web开发的大局.我真的不了解web.xml和context.xml文件.我不确定什么构成Java EE应用程序而不是通用Java Web应用程序.我无法弄清楚bean与普通Java类(POJO?)的区别以及它与Enterprise Java Bean(EJB)的区别.这些只是我能想到的前几个问题,但还有更多.
了解Java Web应用程序如何从上到下运行而不仅仅是如何使用特定框架开发应用程序的好方法是什么?(有这样的书吗?)最后,我想了解Java Web应用程序,以便编写自己的框架.
更新:要明确,我对学习如何使用特定框架(例如,Spring或Java EE)不感兴趣.我正在寻找一个通用Java Web应用程序的内部解释.
objective-c ×4
cocoa ×3
cocoa-touch ×2
ios ×2
autolayout ×1
cgcontext ×1
grep ×1
java ×1
java-ee ×1
macos ×1
nsautolayout ×1
nsdocument ×1
nstableview ×1
ocmock ×1
perl ×1
unit-testing ×1