我有一个iOS应用程序,我最近切换到Xcode 8.作为其中的一部分,我们从swift 2.2切换到2.3(swift 3将在稍后出现).
我有一个自动构建管道,基本上运行xcodebuild在专用构建机器上生成发布二进制文件,然后我对所有这些进行排序(Xcode 8的自动代码签名确实搞砸了所有内容),现在我将我的应用程序上传到iTunes连接,它失败并出现此错误:
ERROR ITMS-90171:"无效的束状结构-二进制文件'MyApp.app/libswiftRemoteMirror.dylib’不允许您的应用程序不能包含独立的可执行文件或库,比支持束的CFBundleExecutable其他参考包编程.有关iOS应用包结构的信息,请访问https://developer.apple.com/go/?id=bundle-structure."
果然,如果我解压缩.ipa文件并查看,那就libswiftRemoteMirror.dylib坐在那里.
如果我通过Xcode存档/导出iTunes,那么它会生成一个没有的应用程序包libswiftRemoteMirror.dylib,但是我的应用程序的所有其他版本似乎都有它.即使只是在Xcode中进行调试构建,然后查看输出显示libswiftRemoteMirror.dylib位于我的应用程序包中,表明Xcode本身肯定是在那里,而不是我的自动构建脚本的任何部分.
这个文件是什么,为什么要放在那里,我该怎么办呢?我可以修改我的构建脚本以删除此文件以用于发布版本,但我担心这可能会影响代码签名过程.无论如何我会试一试,看看会发生什么,但感觉这不是正确的事情.
任何意见,将不胜感激.
我有一个WCF客户端/服务器应用程序,它使用WSHttpBinding通过HTTP进行通信.
服务器设置:使用标准WCF进行自托管ServiceHost.我的实际服务类别归结为:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple,
InstanceContextMode = InstanceContextMode.PerSession,
UseSynchronizationContext = false)]
Run Code Online (Sandbox Code Playgroud)
客户端安装:使用visual-studio生成的客户端代理使用同步服务调用(proxy.call_server_method块直到服务器完全响应为止.)
场景:我有一个特定的方法调用,需要20秒才能在服务器上执行.客户端在一个单独的线程中调用此方法,因此它不会被阻止,并且ConcurrencyMode.MultipleWCF也应该在服务器上的单独线程中执行它.
这个理论得到以下事实的支持:当我配置我的应用程序使用时NetTcpBinding,一切正常.
问题:
如果我配置要使用的应用程序WSHttpBinding,则此长方法调用会导致http请求"备份".我已经通过检查我的日志和使用fiddler调试HTTP请求来验证这种行为.
例:
但有时候:
<add address="*" maxconnection="100"/>在客户端的app.config中进行设置会使此(似乎)停止发生.这是来自提琴手演示问题的时间表:(点击查看大图)
如您所见,请求都在服务器上备份.一旦20秒的请求完成,响应都会泛滥,但请注意,有些请求没有被阻止......
所以,问题:
NetTcpBinding而不能使用WSHttpBinding?笔记:
!syncblk它,它一直报告没有锁定.<serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />设置了服务器的app.config在swift中,如果没有使用类名称为方法调用添加前缀,则实例func不能调用a static/class func.或者你可以使用type(of: self),例如
class Foo {
static func doIt() { }
func callIt() {
Foo.doIt() // This works
type(of: self).doIt() // Or this
doIt() // This doesn't compile (unresolved identifier)
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,这有什么区别?它只是编码风格的问题,还是存在一些差异,例如静态或动态调度?
如果它只是编码风格,那么首选的风格是什么?
如果我创建一个这样的类:
// B.h
#ifndef _B_H_
#define _B_H_
class B
{
private:
int x;
int y;
};
#endif // _B_H_
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
// main.cpp
#include <iostream>
#include <vector>
class B; // Forward declaration.
class A
{
public:
A() {
std::cout << v.size() << std::endl;
}
private:
std::vector<B> v;
};
int main()
{
A a;
}
Run Code Online (Sandbox Code Playgroud)
编译时编译器失败main.cpp.现在我知道的解决方案是#include "B.h",但我很好奇为什么它失败了.无论是g++或cl的错误信息都在这个问题很有启发.
我有一些代码,我正在返回一个对象数组.
这是一个简化的例子:
string[] GetTheStuff() {
List<string> s = null;
if( somePredicate() ) {
s = new List<string>(); // imagine we load some data or something
}
return (s == null) ?
new string[0] :
s.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
问题是,这有多贵new string[0]?
我应该只返回null并使调用者接受null作为指示"未找到任何内容"的有效方式吗?
注意:这是在一个循环中调用的,它会运行数百次,所以这是我认为这种优化实际上并不"过早"的少数情况之一.
PS:即使它还为时过早,我仍然想知道它是如何工作的:-)
最初当我问它是否使用了任何空间时,我从'C/C++'的角度思考问题,有点像在C中,写入char a[5];将在堆栈上分配5个字节的空间,char b[0];并将分配0个字节.
我意识到这不适合.NET世界,但我很好奇,如果这是编译器或CLR将检测和优化的东西,因为一个大小为零的不可调整大小的数组真的不应该(至于我可以看到?)需要任何存储空间.
我有一个数据绑定WPF comboxbox,我使用该SelectedValuePath属性根据对象的文本以外的东西选择一个选定的值.这可能最好用一个例子来解释:
<ComboBox ItemsSource="{Binding Path=Items}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
SelectedValue="{Binding Path=SelectedItemId}"/>
Run Code Online (Sandbox Code Playgroud)
这个东西的datacontext看起来像这样:
DataContext = new MyDataContext
{
Items = {
new DataItem{ Name = "Jim", Id = 1 },
new DataItem{ Name = "Bob", Id = 2 },
},
SelectedItemId = -1,
};
Run Code Online (Sandbox Code Playgroud)
当我显示预先填充的数据时,这一切都很好,其中SelectedItemId匹配有效Item.Id.
问题是,在新项目的情况下,SelectedItemId未知的地方.WPF的作用是将组合框显示为空白.我不想要这个.我想禁止组合框中的空白项; 我希望它显示列表中的第一项.
这可能吗?我可以编写一些代码来明确地SelectedItemId预先设置,但由于UI的缺点,我不得不改变我的数据模型.
简述:
我String.Trim使用win32和标准C api(使用MSVC2008进行编译,因此我可以访问所有C++的东西,如果需要,但我只是试图修剪一个char*).
鉴于存在strchr,strtok以及其他字符串函数的所有方式,肯定应该有装饰功能,或者一个可以改变用途...
谢谢
将rails 1.2网站升级到2.1后,ExceptionNotifier插件不再有效,抱怨此错误:
ActionView :: TemplateFinder :: InvalidViewPath:找到未处理的视图路径:"/ path/to /appname/vendor/plugins/exception_notification/lib/../views".使用#append_view_path,#prepend_view_path或#view_paths =设置视图路径.
是什么导致它,我该如何解决?
简述:
在Visual Studio 2008中,Debug菜单有一个Exceptions...选项.
单击此按钮时,将显示"抛出异常时中断"对话框,其中勾选"公共语言运行时异常"旁边的框.
我希望能够以编程方式勾选/取消选中此框.
阐述:
这会导致调试器在抛出任何CLR异常时中断(而不是当它被捕获并重新抛出时),因此这对于故障排除很有用.
问题是,它捕获了所有CLR异常,并且.NET框架恰好在内部抛出并捕获一堆异常,这些异常也会被捕获.这导致调试器打破了一堆我真正不关心的异常,因为它们是框架的内部而不是问题.
WCF 在这方面特别糟糕,幸运的是,我的应用程序在整个地方使用WCF.
我想做的是,关闭复选框,一旦我的应用程序启动(并通过WCF连接阶段和所有内部异常),然后打开它,打破现在的所有异常在.
给定一个模型
class BaseModel < ActiveRecord::Base
validates_presence_of :parent_id
before_save :frobnicate_widgets
end
Run Code Online (Sandbox Code Playgroud)
和派生模型(底层数据库表有一个type字段 - 这是简单的rails STI)
class DerivedModel < BaseModel
end
Run Code Online (Sandbox Code Playgroud)
DerivedModel将以良好的OO方式继承所有的行为BaseModel,包括validates_presence_of :parent_id.我想关闭验证DerivedModel,并防止回调方法被触发,最好不要修改或以其他方式破坏BaseModel
什么是最简单,最强大的方法?