小编tit*_*coy的帖子

在UIViewController上设置readonly navigationController属性以进行模拟

我使用OCMock创建了一个模拟UINavigationController.但是,我不能将它分配给UIViewController的navigationController属性,因为该属性是只读的.

id mockNavController = [OCMockObject mockForClass:[UINavigationController class]];
...
myViewController.navigationController = mockNavController; // readonly!
Run Code Online (Sandbox Code Playgroud)

这篇博文的作者声称找到了一个解决方案,却忽略了分享它.

cocoa-touch unit-testing objective-c ocmock

9
推荐指数
2
解决办法
4129
查看次数

Cocoa中单个窗口中的多个文档

我想通过选项卡式界面编写一个可能在一个窗口中有多个文档的应用程序.我应该避免使用NSDocument架构(基于Cocoa文档的应用程序模板)吗?据我所知,它每个文档只支持一个或多个窗口,反之则不然.

我已经和这个问题争论了一段时间,并且已经在NSDocument架构上构建了我的大部分应用程序但是我无法想出一个将多个文档与单个窗口相关联的好方法.

编辑:除了基本的文档窗口,我想要项目文档窗口.在这种复杂程度上,还是值得攻击NSDocument架构吗?Apple是否使用NSDocument架构编写Xcode(以这种方式工作)?

cocoa document-based nsdocument

8
推荐指数
2
解决办法
3671
查看次数

如何获得使用autolayout的NSTableCellView的高度

我有一个基于视图的NSTableView.我将textField其他元素NSTableCellView放在Interface Builder中的autolayout中.如何根据自动布局参数获取单元格的高度?

这个答案是我找到的最接近我要找的东西,但它是为iOS编写的,并且该systemLayoutSizeFittingSize方法不存在NSView.

macos nstableview autolayout nstablecellview nsautolayout

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

在CGContext中使用渐变填充形状

我想用线性CGGradient填充我通过Core Graphics绘制的多边形形状.CGContextDrawLinearGradient函数从一个点到另一个点绘制渐变,但它填充整个视图.如何仅在我绘制的多边形内部显示渐变?

cocoa objective-c cgcontext

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

Perl grep如何确定几个哈希的并集?

我不理解Programming Perl 3e的这个函数的最后一行.

以下是通过返回传递给它的所有哈希中发生的键列表,编写一个执行某种集合交集的函数的方法:

@common = inter( \%foo, \%bar, \%joe );
sub inter {
    my %seen;
    for my $href (@_) {
        while (my $k = each %$href) {
            $seen{$k}++;
        }
    }
    return grep { $seen{$_} == @_ } keys %seen;
}
Run Code Online (Sandbox Code Playgroud)

我知道这%seen是一个哈希,它将每个键映射到在为函数提供的任何哈希中遇到的次数.

perl grep

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

应该查看逻辑是否在UIView或(如适用)其UIViewController?

我最近发现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

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

有没有理由不返回一个不可预期的可变对象?

我有许多类似于以下的功能:

+ (NSArray *)arrayOfSomething
{
    NSMutableArray *array = [NSMutableArray array];

    // Add objects to the array

    return [[array copy] autorelease];
}
Run Code Online (Sandbox Code Playgroud)

我的问题是关于这个方法的最后一行:返回可变对象并避免复制操作或返回不可变副本是否更好?是否有任何充分的理由避免返回一个不可预期的可变对象?

(我知道返回NSMutableArray是合法的,因为它是NSArray的子​​类.我的问题是这是否是一个好主意.)

objective-c

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

Xcode静态分析器和copyWithZone

Xcode 4静态分析器将此方法标记为具有过度释放的返回值,而在这种情况下似乎并非如此.

- (id)copyWithZone:(NSZone *)zone
{
    return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString];
}
Run Code Online (Sandbox Code Playgroud)

有一个箭头从return关键字指向它后面的表达式,另一个从该表达式指向分析器警告.这是静态分析:

  1. 方法返回具有+1保留计数的Objective-C对象
  2. 对象发送-autorelease消息
  3. 对象作为拥有引用返回给调用者(传递给调用者的单个保留计数)
  4. 对象以+0(非拥有)保留计数返回给调用者
  5. 具有+0保留计数的对象返回给调用者,其中预期+1(拥有)保留计数

静态分析仪是否不正确或此代码有问题?


根据要求,-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静态分析器不再将此标记为问题.

reference-counting objective-c clang-static-analyzer ios

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

在NSTextView中显示隐藏的字符

我正在为Mac OS X编写一个文本编辑器.我需要在NSTextView中显示隐藏的字符(例如空格,制表符和特殊字符).我花了很多时间寻找如何做到这一点,但到目前为止我还没有找到答案.如果有人能指出我正确的方向,我将不胜感激.

cocoa special-characters hidden-characters

6
推荐指数
2
解决办法
4460
查看次数

如何学习高级Java Web开发概念

我有一些用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应用程序的内部解释.

java java-ee

6
推荐指数
2
解决办法
3306
查看次数