我有一个带有(id)参数的init方法:
-(id) initWithObject:(id) obj;
Run Code Online (Sandbox Code Playgroud)
我试着像这样称呼它:
[[MyClass alloc] initWithObject:self];
Run Code Online (Sandbox Code Playgroud)
但是XCode抱怨该参数是一个"不同的Objective-C类型"(通常表示类型不匹配或间接错误的级别).
如果我明确地将自己转换为(id)警告就会消失.在任何一种情况下,代码都按预期运行.有趣的是,在下一行我将自己传递给另一个也带有id的方法,并且工作正常.
我想知道我是否遗漏了一些微妙的东西 - 或者它是编译器的特性?
直到我确定为什么必要的原因,我才完全放心.
[编辑]
我被要求提供更多代码.不确定还有其他相关的东西.这是我打电话的实际代码.请注意,它本身就是一个init方法.这是initWithSource给出警告的呼吁:
-(id) initWithFrame:(CGRect) frame
{
self = [super initWithFrame: frame];
if( self )
{
delegate = nil;
touchDelegate = [[TBCTouchDelegate alloc] initWithSource:self];
[touchDelegate.viewWasTappedEvent addTarget: self action:@selector(viewWasTapped:)];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
这是调用的init方法:
-(id) initWithSource:(id) sourceObject
{
self = [super init];
if (self != nil)
{
// Uninteresting initialisation snipped
}
return self;
}
Run Code Online (Sandbox Code Playgroud) 我正试图从Suave.io编译一个简单的F#项目这个例子:http://suave.io/
open Suave.Http.Applicatives
open Suave.Http.Successful
open Suave.Web
open Suave.Types
open Suave.Model
let greetings q =
defaultArg (q ^^ "name") "World" |> sprintf "Hello %s"
let sample : WebPart =
path "/hello" >>= choose [
GET >>= request(fun r -> OK <| greetings (query r))
POST >>= request(fun r -> OK <| greetings (form r))
NOT_FOUND "Found no handlers" ]
Run Code Online (Sandbox Code Playgroud)
不幸的是我在(查询r)部分遇到编译器错误:
error FS0001: Expecting a type supporting the operator '^^' but given a function type. You may be missing …Run Code Online (Sandbox Code Playgroud) 我有一个WinForms TreeView.TreeView代表更详细视图的摘要,我正在使用的一个视觉提示是使节点的文本变为粗体或常规.问题是,如果您将节点的字体从常规更改为粗体,则会剪切文本,就好像它正在尝试将粗体文本放在常规文本的空间中一样.
稍微浏览一下就会发现通常的解决方法是将TreeView的字体设置为粗体字体,并选择性地将节点设置为常规字体.
这确实更好,但是一旦我将节点更改为常规节点,如果我将其更改回粗体,它将再次被剪裁.由于我正在动态更新我的视图,我遇到了这个问题.
令人惊讶的是我在Stackoverflow上找不到任何关于这个问题的引用,所以我想我现在就把它放在这里.有没有人知道这个问题的更彻底(但最好不是太复杂)的解决方法或解决方案?
我正在使用.Net 2.0上运行的C#3,但如果需要可以使用.Net 3.5.
[更新]
不接受呃?太糟糕了.到目前为止,我提出的最好的方法是在字符串的末尾添加一些空格(以便为它增长空间).这闻起来很多层次(尤其是因为它会影响滚动条).我不想去第三方控制(或写我自己的),因为这只是我的开发团队的内部应用程序.考虑改变隐喻,但这是一个很好的契合.
我有一个iPhone应用程序正在发货(vConqr - 你应该去购买它:-)).我在几个不同的机器上构建项目,包括一个同事,并且它一直工作正常.但是,就在最近,在我的第二台开发机器上,我的构建每次都失败并出现错误:
/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist Entitlements.plist --outdir /Code/iPhone/VirtualConquest/build/Debug-iphonesimulator/VirtualConquest.app
error: can't exec '/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist' (No such file or directory)
我重新安装了XCode - 两次!(我第二次删除/ Developer/Library/Xcode下的文件).我删除了我的源代码树并检查了源代码控制新鲜.错误仍然存在.
自从我开始上一个测试计划以来,Entitlements.plist文件已经存在了几个星期.我不能确定,但我怀疑我没有在我的第二台开发机器上编译,因为它已被添加.然而,除了我的主要开发机器,它也在我的同事机器上构建良好,所以我很困惑,差异是什么.
我已经用Google搜索了错误,但要么我的Google-Fu是铺位,要么这不是常见的错误 - 我发现没有相关的点击.
这真是令人沮丧,尤其是因为我使用我的第二台机器作为浸泡测试/持续集成机器.
任何人遇到同样的事情,或有任何其他建议?