我有一个基于NSDocument的应用程序,我想在其中限制同时打开的文档数量(对于Lite版本).我只想拥有n个文档,如果用户尝试打开超过n个,则显示一条消息,其中包含指向完整应用程序下载的链接.
我已经设法使用NSDocumentController计算文档的数量,并且在readFromFileWrapper中,我可以返回FALSE.这会阻止新文档打开,但它会显示标准错误消息.我不知道如何避免这种情况.我想从笔尖打开一个新窗口.
有没有办法阻止NSDocument从readFromFileWrapper返回FALSE时显示标准错误消息?或者是否有任何其他方法可以在调用readFromFileWrapper之前阻止文档打开?
在我的Xcode 4安装中,我只有2个编译器选项:
在许多Xcode示例中,我看到GCC 4.2显示为第三个选项,但这根本不存在.我故意干净安装XCode 4.是否有标准的方法来添加GCC 4.2,如果它还没有?我的一个项目要求我使用GCC(而不是GCC LLVM),其他项目我对GCC LLVM感到满意,所以这只是一个问题.
我有两个JPanels相同的大小,一个在另一个的顶部.顶层用作拖动选择面板,另一个用于添加其他组件.我的问题是这些添加组件的鼠标事件处理程序不会被触发,因为它们由覆盖面板处理.我怎样才能拖动这些添加组件的顶部,但仍然具有mouseEntered并mouseExited启用了底层组件?
这是一个截图:

正如您所看到的,选择矩形被绘制在叠加上JPanel,但就好像我的鼠标无法通过此面板查看下面的内容(寻找更好的解释方法).
我有2个视图控制器,一个对象选择器和一个对象编辑器.这两个对象都有自己的协议,允许演示者接收数据并解除它们.
编辑器有时需要提供一个选择器,选择器有时需要允许编辑对象.
问题是存在循环协议依赖性,并且由于对象必须符合协议,因此声明转发不起作用(您仍然会收到编译器警告).
我不只是声明需要符合它的ivar,整个选择器/编辑器类需要符合,因此头部需要有关协议的完整信息.
我收到一个Cannot find protocol definition for 'EditorDelegate'错误.
这是一个例子:
Picker.h
#import "Editor.h"
@protocol PickerDelegate;
@interface Picker : UIViewController <EditorDelegate> {
id <PickerDelegate> delegate;
}
@protocol PickerDelegate <NSObject>
- (void)picker:(Picker *) wasDismissedWithObject:(id)object;
@end
Run Code Online (Sandbox Code Playgroud)
Editor.h
#import "Picker.h"
@protocol EditorDelegate;
@interface Editor : UIViewController <PickerDelegate> {
id <EditorDelegate> delegate;
}
@protocol EditorDelegate <NSObject>
- (void)editor:(Editor *) dismissedAfterEditingObject:(id)object;
@end
Run Code Online (Sandbox Code Playgroud)
怎么能克服这个?
我正在阅读Joshua Bloch写的Effective Java一书.在第一章中,他说使用工厂而不是构造函数,并列出了这种方法的优缺点.据我所知,缺点与对象构造没有密切关系.
此外,Bloch说Java Bean的构造方式也有缺点.资料来源:http://www.javapractices.com/topic/TopicAction.do? Id= 84
好的,所以使用构造函数不是很好,Java bean不是很好,工厂很好,所以你可以做一些缓存查找并避免创建额外的对象(取决于情况,有时你不想要缓存).
如果我试图避免构造函数和java bean,我应该如何创建一个对象?
我错过了一点吗?什么是最佳做法?
编辑:
class Foo{
private Foo(){}
public Foo Create(){
return new Foo();
}
}
Run Code Online (Sandbox Code Playgroud) 我最近在Objective-C中编写了一个程序,我尝试编写了以下部分的行,其中'someString'是NSString的一个实例:
[someString substringFromIndex:3];
Run Code Online (Sandbox Code Playgroud)
编译器似乎没关系,但我不确定为什么.该substringFromIndex方法的文档说该参数必须是一个NSUInteger,而不仅仅是一个原始整数?我为什么要这样做?(注意,我是Objective-C的新手,所以我确信推理非常简单,或者我对某些事情的看法不对.)
基本上我的视图控制器具有类的49个实例变量CircleView(叫circleView1,circleView2,... circleView49).该CircleView班是一个简单的子类UIImageView,基本上在初始化时返回一个圆圈图片.
这是我想要做的:
在我对视图控制器的实现中,我希望能够使用字符串选择实例变量,例如假设我生成i1到49之间的随机整数,让我们说它是5.我希望能够构建一个NSString使用类似的东西[NSString stringWithFormat @"circleView%i",i];并以某种方式到达实际的circleView5实例变量.这可能吗?
PS我正在寻找的内容NSClassFromString,但适用于实例变量或对象.
也许我错过了一些东西,但是这个常规表达有什么问题?
var str = "lorem ipsum 12345 dolor";
var x = /\d+/.exec(str);
var y = /\d*/.exec(str);
console.log(x); // will print 12345
console.log(y); // will print "" but why ?
Run Code Online (Sandbox Code Playgroud)
你能解释为什么/\d*/.exec(str);返回一个空字符串而不是"12345". *表示零个或多个匹配项.
table.setRowSelectionInterval(0, 0);
Run Code Online (Sandbox Code Playgroud)
我曾尝试过上面的代码,但是当我使用这段代码时,我无法使用以下代码检索值:
int col = table.getSelectedColumn();
int row = table.getSelectedRow();
finalOID=(String)table.getModel().getValueAt(row, col);
System.out.println("first oid:"+finalOID);
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
我想这真的很长很短,我怎么能设法通过Xcode UIAutomation将我的应用程序从后台状态带到前台状态?
任何人的想法......?
我想切换视图,但没有动画,如交叉溶解,所以它转到不同的视图,没有转换.只需直接切换到视图.
这是当前的代码:
-(IBAction)goNext:(id)sender; {
NwxtiewController *second = [[NextViewController alloc] initWithNibName:nil bundle:nil];
second.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:second animated:YES];
}
Run Code Online (Sandbox Code Playgroud) iphone ×3
java ×3
xcode ×3
objective-c ×2
swing ×2
cocoa ×1
cocoa-touch ×1
constructor ×1
events ×1
factory ×1
gcc4 ×1
javabeans ×1
jtable ×1
miglayout ×1
nsdocument ×1
object ×1
regex ×1
xcode4 ×1