我想创建一个Activity,但不必在清单文件中声明它.这可能吗?我看到的每个地方似乎都必须在清单中声明每个活动,但我注意到我的清单文件中没有声明某些活动,例如内置的ChooserActivity.
我使用C#GZipStream类来压缩一些输入数据.问题是输入为空时.在那种情况下,它最终创建一个0字节的文件.当我尝试使用7zip解压缩生成的.gz文件时,它会提示错误,说明格式无效.如果我有非空输入,它工作正常.请告诉我如何创建一个将解压缩为0字节文件的有效.gz文件?
var file = new FileStream("foo.txt.gz", FileMode.Create, FileAccess.ReadWrite);
var gzip = new GZipStream(file, CompressionMode.Compress);
var writer = new StreamWriter(gzip);
for (string line in input) {
writer.Write(line);
}
writer.Close();
gzip.Close();
file.Close();
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如果我的'input'数组为空,我最终会写一个名为foo.txt.gz的文件,其中包含0个字节,而7zip表示该文件无效.但是如果我有一个非空数组,我会得到一个有效的文件.请告诉我如何修改我的代码以解决问题,即使输入为空,我也会得到一个有效的.gz文件.谢谢!
编辑:这可能是.NET中的一个错误.如果您发现了同样的问题,并一致认为这是一个错误,请投上:https://connect.microsoft.com/VisualStudio/feedback/details/888912/gzipstream-creates-invalid-gz-files-when-input-是空的
我将我的项目从Swift 3升级到Swift 4,在迁移过程中,它在我的代码中插入了一堆"@objc"注释.我希望摆脱它们以避免生成任何Objective-C入口点.其中一个我无法弄清楚如何摆脱,使用刷新控件.这是违规代码:
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(MyController.handleRefresh(refreshControl:)), for: .valueChanged)
self.table.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)
问题是它似乎使用了#selector.如何在没有选择器的情况下实现刷新控制?