问题列表 - 第20723页

为什么必须使用CALayer的presentationLayer进行命中测试?

我正在研究Cocoa Touch应用程序,并试图通过确定触摸视图层的哪个子层来处理触摸.我的控制器代码看起来像这样:

CALayer *hitLayer = [self.view.layer hitTest:point];
Run Code Online (Sandbox Code Playgroud)

这不起作用.如果我点击子层的底部,而不是顶部,它会起作用.经过一个小时的拉毛和谷歌搜索后,我终于发现,如果使用表示层进行命中测试而不是图层本身,它会起作用:

CALayer *hitLayer = [self.view.layer.presentationLayer hitTest:point];
Run Code Online (Sandbox Code Playgroud)

所以,我已经解决了我的问题,但我的问题是:为什么?

我已经阅读了核心动画指南,我知道表示树和渲染树可以与对象模型树不同.但我不明白为什么表示树(显然)会有不同的命中测试行为.表示树和对象模型不会具有相同的帧,边界等吗?

cocoa cocoa-touch core-animation calayer

6
推荐指数
1
解决办法
5203
查看次数

java内部/外部类关于外部类私有变量访问的问题

我有以下java类:

class Outer
{
    private Integer a;
    private Long b;

    class Inner
    {
        public void foo()
        { 
            System.out.println("a and b are " + a + " " + b);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在Outer和Outer $ Inner上运行javap时,我得到以下内容:

C:\test>javap Outer
Compiled from "Outer.java"
class Outer extends java.lang.Object{
    Outer();
    static java.lang.Integer access$000(Outer);
    static java.lang.Long access$100(Outer);
}

C:\test>javap Outer$Inner
Compiled from "Outer.java"
class Outer$Inner extends java.lang.Object{    
    final Outer this$0;
    Outer$Inner(Outer);
    public void foo();
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

1)为什么java编译器生成静态方法,在外层使用'Outer'参数来访问其私有变量?为什么不是内部类可以通过它的这个$ 0成员轻松调用的实例方法?

2)为什么内部班级的0美元成为最终?如果不是最终会发生什么?

感谢致敬.

java decompiling class inner-classes

16
推荐指数
1
解决办法
1万
查看次数

解释2层和3层架构的不同层次?

我无法理解哪些元素被称为第一层,第二层和第三层以及它们所在的位置.它们可以驻留在同一台机器或不同的机器上.哪一层驻留在哪台机器上?我们如何将特定应用程序标识为2层应用程序或3层应用程序.请举例说明

architecture n-tier-architecture

37
推荐指数
3
解决办法
14万
查看次数

NHibernate自动将我的对象更新到数据库,而无需在Asp.Net MVC中调用SaveOrUpdate

我正在学习Nhibernate,有些东西我不太确定.我希望你能帮我检查一下我的代码.当您看到以下代码时,我没有将其称为" SAVE ",它仍然会更新数据库的值.可能存在我想要更改对象值并且不想将它们保存回数据库的情况.我该怎么做?

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult UpdateShoppingCart(FormCollection collection)
    {

        int customerID = int.Parse(collection["CustomerID"]);


        foreach (var item in _shoppingCartItemReopository.GetByCustomerID(customerID))
        {

            item.DateUpdated = DateTime.Now;

            // update item one by one
            //_shoppingCartItemReopository.Save(item);
        }

        return RedirectToAction("GetUserShoppingCart", new { id = customerID });
    }
Run Code Online (Sandbox Code Playgroud)

在我的Gloabal.asax.cs文件中:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        ManagedWebSessionContext.Bind(HttpContext.Current, SessionManager.SessionFactory.OpenSession());
    }



    protected void Application_EndRequest(object sender, EventArgs e)
    {
        ISession session = ManagedWebSessionContext.Unbind(HttpContext.Current, SessionManager.SessionFactory);
        if (session != null)
        {
            try
            {
                if (session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                else
                { …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate

2
推荐指数
1
解决办法
2590
查看次数

支持电子邮件格式:纯文本还是HTML?

我必须在系统事件(服务窗口,警报等)上发送计划的支持通知电子邮件.我看到我从供应商处收到的大多数此类电子邮件都是纯文本格式.

我想我是否应该坚持纯文本格式(伴随限制)或提供基于HTML的更好的可视化?

我知道不同的电子邮件客户端的HTML呈现能力有限,但我认为没有复杂的HTML图像可以.

email email-client html-email

3
推荐指数
2
解决办法
2264
查看次数

"typedef sometype sometype"有什么意义?

最近我在代码中遇到了以下构造:

typedef sometype sometype;
Run Code Online (Sandbox Code Playgroud)

请注意"sometype"代表完全相同的类型,没有任何添加,如"struct"等.

我想知道它有什么用处?

UPD:这仅适用于用户定义的类型.

UPD2:实际代码在模板上下文中,如下所示:

template <class T>
struct E
{
   typedef T T;
   ...
}
Run Code Online (Sandbox Code Playgroud)

c++ typedef

6
推荐指数
4
解决办法
977
查看次数

扩展方法与父类方法行为

看下面的代码:

class A
{
    public string DoSomething(string str)
    {
        return "A.DoSomething: " + str;
    }
}

class B : A
{
}

static class BExtensions
{
    public static string DoSomething(this B b, string str)
    {
        return "BExtensions.DoSomething: " + str;
    }
}

class Program
{
    static void Main(string[] args)
    {
        var a = new A();
        var b = new B();
        Console.WriteLine(a.DoSomething("test"));
        Console.WriteLine(b.DoSomething("test"));

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

代码的输出是:

A.DoSomething:测试

A.DoSomething:测试

编译时,它不会发出警告.

我的问题是:为什么在代码编译时没有警告,以及在DoSomething调用方法时究竟发生了什么?

c# extension-methods

2
推荐指数
1
解决办法
581
查看次数

Silverlight中的多行文本框

我如何设置silverlight文本框的多行属性?

silverlight

27
推荐指数
2
解决办法
2万
查看次数

lisp nth函数对cons-cell不起作用

如果我的变量是list和cons-cell的组合,如果在lisp中使用nth函数,例如: 当我说它返回2 时
(setq aa '(1 2) )
(nconc aa (+ 1 2))
返回我但当我使用它时抛出错误(1 2 . 3)
(nth 1 aa)
(nth 2 aa )

lisp elisp

1
推荐指数
1
解决办法
292
查看次数

如何在rails应用程序中发送动态生成的文件

我正在尝试在rails应用程序中提供动态生成的文件,因此当用户单击特定链接时,将生成文件并使用send_data将其发送到客户端.

该文件不打算重复使用:是一个简短的文本文件,重新生成应该非常便宜,因为它不会被大量删除; 但如果有必要或方便我可以将它存储在数据库中,所以只生成一次.

首先,我想在内存中生成文件,并将其发送到控制器中.我试图存档这样的东西:

def DownloadsController < ApplicationController
  def project_file
    project = Project.find(params[:id])
    send_data project.generate_really_simply_text_file_report
  end
end
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在内存中生成流,因此在文件系统中不会创建任何文件.

另一种选择是在rails app tmp目录中生成带有随机名称的文件并从中发送,但是文件将保留在那里,这是我不希望发生的事情.

编辑:如果我没有弄错,send_file会阻止请求直到文件被发送,所以它可以工作......

还有其他建议或意见吗?

提前致谢

ruby-on-rails file dynamic-data

6
推荐指数
1
解决办法
8564
查看次数