- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有一个内置的快捷方式 NSApp,我有什么理由不应该为 NSFileManager 添加一个?
#define NSFM [NSFileManager defaultManager]
我认为省略它会使我的代码更清晰,我看不出保留它有什么好处。(我计划从现在开始在我的所有项目中都这样做,所以它不会晦涩难懂。)
NSFileManager *fm = [NSFileManager defaultManager]
最佳答案
为什么不直接使用局部变量呢?
NSFileManager *fm = [NSFileManager defaultManager];
// use fm...
或者更好的是,将文件管理器作为方法参数注入(inject):
- (void)myMethod {
//using [NSFileManager defaultManager]
}
成为
- (void)myMethodWithFileManager:(NSFileManager*)fm {
//usin fm
}
由于 defaultManager 是单例(实际上是全局的),这使得测试非常困难。注入(inject)依赖项可以节省您在方法中键入(如您所愿)的时间,并使单元测试变得更加容易——您可以注入(inject)一个测试替身而不是 defaultManager。
最后,Cocoa 和 Objective-C 普遍认为显式代码优于短代码。基本原理是使用更冗长的名称使代码更易于阅读(从而更易于维护)。这种理念一直延伸到 Objective-C 的带有交错命名参数的选择器风格。除非您真的无法处理额外的输入(并且 Xcode 的代码完成对您不起作用),否则请坚持使用现有名称。在罗马的时候……
关于objective-c - 为什么我不应该只定义 #define NSFM [NSFileManager defaultManager] 而不是每次都写出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111149/
例如:我的文档中有一个文件名为@"CoreSimulator/Devices/.../abc.pdf" 我怎么知道这个文件曾经被打开过? 我可以使用 NSFileManager 将任何客户标签添加到文
使用下面的行, [fileManager copyItemAtPath:sourcePath toPath:targetPath error:&error]; 我们可以复制一个文件夹,但如果该文件夹已
一些核心类使用函数返回其自身的实例: NSFileManager.defaultManager() PHImageManager.defaultManager() UIScreen.mainScree
在上千次 print() 语句之后,我终于找到了问题所在!但是,我不确定如何修复它。问题出在这一行: NSFileManager.defaultManager().createFileAtPath(s
这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exis
这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exis
这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exis
这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exis
我一直在尝试使用 MPMoviePlayerViewController 播放视频并且效果很好。但在我播放之前,我想检查我想播放的视频是否真的存在,所以我使用 NSFileManager.defaul
这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exis
这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exis
有一个内置的快捷方式 NSApp,我有什么理由不应该为 NSFileManager 添加一个? #define NSFM [NSFileManager defaultManager] 我认为省略它会使
这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exis
在 iOS 中,我知道有时候 [[NSFileManager alloc] init] 更好——特别是当 [NSFileManager defaultManager] 可能不是线程安全的时候。引用:h
我编写了一个简单的测试应用程序 (Mac/Cocoa) 来连接到 iCloud 中的键值存储。我似乎在第一道篱笆上摔倒了。 您可以在此处查看我的简单应用程序的代码,您会发现我没有从“URLForUbi
我是一名优秀的程序员,十分优秀!