小编Eti*_*Sky的帖子

NSError:使用nil检测错误实际上是否会关闭错误报告?

我养成了以这种方式编写错误处理的习惯:

 NSError* error = nil;
 NSDictionary *attribs = [[NSFileManager defaultManager] removeItemAtPath:fullPath error:&error];
 if (error != nil) {
  DLogErr(@"Unable to remove file: error %@, %@", error, [error userInfo]);
  return; 
 }  
Run Code Online (Sandbox Code Playgroud)

但看文档似乎我错了:

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

如果发生错误,则返回时包含描述问题的NSError对象.如果您不想要错误信息,请传递NULL.

从技术上讲,nil和NULL之间没有区别,所以这是否意味着我实际上关闭它并且永远不会收到错误消息(即使上面示例中的删除失败了)?有没有更好的方法来编码?

谢谢.

null objective-c nserror

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

如何设置用于多面板首选项窗口的NSToolbar的init状态?

我正在尝试使用NSToolbar编写多面板首选项窗口,如许多Mac应用程序中所示.有一些教程通过以编程方式填充工具栏来实现这一点,但这似乎需要大量的"机械"代码,我认为通过在IB中设置整个工具栏来保存.每个NSToolbar项调用下面的操作,标记用于选择视图(使用IBOutlet从相同的nib引用):

-(IBAction)changeViewController:(id) sender {
    NSToolbarItem *tbi = (NSToolbarItem*)sender;
    NSString* label = [tbi label];
    NSInteger tag = [tbi tag];
    [self displayViewController:tag];
    NSWindow* window = [self window];
    [window setTitle:label];
}
Run Code Online (Sandbox Code Playgroud)

然后我在每个NSToolbarItem上设置Autovalidates,它将在工具栏项上给出选定/取消选择的外观.

现在这是我的问题:我无法找到设置初始状态的好方法.当我打开窗口时,没有选择任何工具栏项目,我也没有得到任何udpate代码,这将允许我正确选择它.我想出的是:

- (void) awakeFromNib { 
    [self displayViewController:kGeneralPrefsTag];
    NSWindow* window = [self window];
    NSToolbar *toolbar = [window toolbar];
    [toolbar setSelectedItemIdentifier:@"generalPreferences"];
    [window setTitle:@"General"];
}
Run Code Online (Sandbox Code Playgroud)

这是所有冗余信息:1)我需要为此工具栏项声明项目标识符2)我手动复制第一个首选项面板的名称,以便能够设置窗口标题.

有没有更好的方法来初始化工具栏?我怎么能调用工具栏的第一项,以便它调用changeViewControllerAction?

谢谢.

macos preferences nstoolbar

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

标签 统计

macos ×1

nserror ×1

nstoolbar ×1

null ×1

objective-c ×1

preferences ×1