我在iPhone应用程序上进行协作,将项目文件(.xcodeproj目录)检入源代码控制.一个重要的设置是"代码签名身份",它指定用于签署应用程序的证书,以便它可以在iPhone上运行.
项目中的每个开发人员都有自己的代码签名标识,因此每当有人对项目进行更改时,他的代码签名标识都会保存到项目设置中,然后其他所有人都会继承该更改.然后,他们必须将其更改为CSI,然后才能继续.
有没有办法让代码签名标识保存在一些本地的每用户项目文件中,而不会被检入源代码管理?
在Objective-C中,您可以通过分配对象的isa成员变量来在运行时更改对象的动态类型:
id object = ...;
object->isa = [SomeClass class];
Run Code Online (Sandbox Code Playgroud)
这是未定义的行为吗?我现在正在做这个作为其他东西的kludge,它似乎工作,但我觉得这样做很脏.我设置的新类没有添加任何成员变量,它只是覆盖一个方法并添加一个新方法,因此类大小是相同的.我觉得如果我改变了对象大小,会导致很多不好.
我正在处理一些 Objective-C++ 代码(.mm文件),我很好奇是否可以让 emacs 对 Objective-C 部分和 C++ 部分使用正确的语法突出显示。 objc-mode和c++-mode都是主要模式(构建在 之上cc-mode),因此它们不能同时使用。
是否有任何次要模式或 elisp hack 可用于同时启用 Objective-C 和 C++ 语法突出显示?
我对核心数据和iphone编程很新.也许这是一个明显的答案,所以如果有人能指出我的教程或其他资源,我们非常感谢!我有一个十进制类型的核心数据实体,因为它处理货币,我读过的所有内容都说在处理货币时使用NSDecimalNumber.话虽这么说,我不能为我的生活弄清楚如何在插入新对象时设置值.这就是我所拥有的
NSManagedObjectContext *moc = [self.fetchedResultsController managedObjectContext];
Envelope *envelope = [NSEntityDescription insertNewObjectForEntityForName:@"Envelope"
inManagedObjectContext:moc];
[envelope setValue:@"Envelope 1" forKey:@"name"];
NSDecimalNumber *budgetNumber = [NSDecimalNumber decimalNumberWithDecimal:1.00];
[envelope setValue:budgetNumber forKey:@"budget"];
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?提前致谢!
尝试在Objective-C块中捕获堆栈上的C++类实例时,我看到了一些奇怪的行为.请考虑以下代码:
#import <Foundation/Foundation.h>
#include <stdio.h>
struct Test
{
Test() : flag(0) { printf("%p default constructor\n", this); }
Test(const Test& other) : flag(0) { printf("%p copy constructor\n", this); }
~Test() { flag = 1; printf("%p destructor\n", this); }
int flag;
};
int main(int argc, char **argv)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Test test;
void (^blk)(void) = ^(void)
{
printf("flag=%d (test=%p)\n", test.flag, &test);
};
printf("about to call blk\n");
blk();
[pool release];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
可以预期,当test块捕获局部变量时blk,它具有一致的状态.但事实并非如此.此代码的输出如下:
0x7fff5fbff650 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Windows 7上的Visual Studio 2010中设置新的Windows窗体应用程序(C++/CLI).每次我尝试打开设计器时,它都会失败并出现这个无用的错误:
Exception from HRESULT: 0x8CE00001
Instances of this error (1)
1. Hide Call Stack
at Microsoft.VisualStudio.Designer.Interfaces.IVSMDCodeDomProvider.get_CodeDomProvider()
at Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_Provider()
at Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_CompileUnit()
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)
Run Code Online (Sandbox Code Playgroud)
如果我调试Visual Studio并打破CLR异常,它实际上首先抛出此异常:
Microsoft.VisualStudio.Design.dll中出现"System.ArgumentException"类型的第一次机会异常
附加信息:参数不正确.(HRESULT异常:0x80070057(E_INVALIDARG))
使用此调用堆栈:
> Microsoft.VisualStudio.Design.dll!Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.VerifyNestedDocDataCompatible() + 0x15d bytes
Microsoft.VisualStudio.Design.dll!Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.Microsoft.VisualStudio.Designer.Interfaces.IVSMDDesignerLoader.Initialize(object pSp, object pHier, int itemid, object punkDocData) + 0xb5 bytes
[Native to Managed Transition]
vcpkg.dll!CVCFormEditorFactory::CreateEditorInstance() + 0x2e49f bytes
msenv.dll!CVsUIShellOpenDocument::OpenSpecificEditor() + 0x784 bytes
VCProject.dll!CVCFileNode::OpenSpecificEditor() + 0xc6 bytes
VCProject.dll!CVCFileNode::OpenSpecificEditor() + 0x3a bytes
VCProject.dll!CVCFileNode::DoOpenFile() + 0x1fe bytes
VCProject.dll!CVCFileNode::DoDefaultAction() + 0x5b bytes
VCProject.dll!CVCArchy::ExecCommand() + …Run Code Online (Sandbox Code Playgroud) 我正在为必须检查父方法的方法编写装饰器(在我正在装饰的类的父级中使用相同名称的方法).
示例(来自PEP 318的第四个示例):
def returns(rtype):
def check_returns(f):
def new_f(*args, **kwds):
result = f(*args, **kwds)
assert isinstance(result, rtype), \
"return value %r does not match %s" % (result,rtype)
return result
new_f.func_name = f.func_name
# here I want to reach the class owning the decorated method f,
# it should give me the class A
return new_f
return check_returns
class A(object):
@returns(int)
def compute(self, value):
return value * 3
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找代码#代替我想要的代码......
谢谢.
我想要做的是从文本文件中读取一行,其中包含一个长度<= 20且两个整数的双字符串,例如它可能如下所示:
Name Surname 1 14
Run Code Online (Sandbox Code Playgroud)
我知道如果我读取字符串,字符串将是所有字符,直到空格,但getline()将整行读作字符串.那我怎么读这样的一行呢?有没有简单的方法,或者我将不得不使用正则表达式?
我有一个用c ++编写的Windows 8 metro应用程序,我正在尝试编译到ARM.在链接期间,我收到以下错误的许多实例:
"error LNK2013: BLX23(T) fixup overflow. Target '<mangledName>' is out of range"
Run Code Online (Sandbox Code Playgroud)
在MSDN网站上说:"你可以通过创建多个图像或通过这样的指令和目标靠得更近使用/ ORDER选项来解决这个问题."
但我真的不明白如何做到这一点.有问题的符号是编译器生成的,并且没有涉及Itanium体系结构,因此该页面上的其他建议不适用.此外,有错误的文件是*.g.cpp文件,由编译器从项目中包含的xaml页面生成.
metro应用程序在Win32配置上运行得很好,所以我想知道在ARM上有更多经验的人是否可以更好地了解如何解决这类问题.
该设置是Windows 8 RP x64上的Visual Studio 2012 RC.
c++ ×4
objective-c ×3
iphone ×2
arm ×1
code-signing ×1
core-data ×1
decorator ×1
emacs ×1
estimation ×1
python ×1
winrt-xaml ×1
xcode ×1