小编Dan*_*Tao的帖子

如果你正在使用CocoaPods,你的.gitignore会有什么?

我已经进行了几个月的iOS开发,并且刚刚学习了有用的依赖管理CocoaPods库.

我在个人项目上试了一下:在我的Podfile中添加了对Kiwi的依赖,运行pod install CocoaPodsTest.xcodeproj,,它运行得很好.

我唯一想知道的是:我应该检查什么,以及我对版本控制忽略了什么?很明显,我想检查Podfile本身,也可能是.xcworkspace文件; 但是我会忽略Pods /目录吗?是否还有其他文件将在未来生成(当我添加其他依赖项时),我还应该添加到我的.gitignore中?

git objective-c cocoapods

374
推荐指数
13
解决办法
10万
查看次数

我可以在视图中获取当前控制器的名称吗?

有没有办法在视图中找出当前控制器的内容?

举例说明为什么我想知道这个:如果几个控制器共享相同的布局,我可能在布局ERB文件中有一个部分,我想根据控制器突出显示当前页面的菜单项.

也许这是一个糟糕的方法.如果是这样,更优选的方法是什么?

不过,我很想知道如何获得当前控制器的名称.

(显然我可以@controller_name = 'users'在每个控制器中放置类似的东西;但这似乎是Rails在幕后已经完成的事情.所以我只是想知道是否有内置方式.)

model-view-controller controller ruby-on-rails view

202
推荐指数
4
解决办法
11万
查看次数

解码其中包含特殊HTML实体的字符串的正确方法是什么?

假设我从服务请求中获得了一些JSON,如下所示:

{
    "message": "We're unable to complete your request at this time."
}
Run Code Online (Sandbox Code Playgroud)

我不确定为什么那个抄袭被编码为那个('); 我所知道的是我想解码它.

这是一种使用jQuery的方法,它突然出现在我脑海中:

function decodeHtml(html) {
    return $('<div>').html(html).text();
}
Run Code Online (Sandbox Code Playgroud)

但这似乎(非常)hacky.什么是更好的方式?有"正确"的方式吗?

javascript jquery html-entities

184
推荐指数
6
解决办法
20万
查看次数

在SASS中是否可以从另一个文件中的类继承?

这个问题几乎说明了一切.

例如,如果我使用Twitter Bootstrap,我可以在自己的SASS样式表中定义继承自Bootstrap的CSS类的类吗?或者SASS中的继承只能在单个文件的范围内工作?

css inheritance sass stylesheet

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

你能从MethodInfo对象得到一个Func <T>(或类似的)吗?

我意识到,一般来说,使用反射会产生性能影响.(事实上​​,我自己并不是反思的粉丝;这是一个纯粹的学术问题.)

假设存在一些看起来像这样的类:

public class MyClass {
    public string GetName() {
        return "My Name";
    }
}
Run Code Online (Sandbox Code Playgroud)

跟我来这儿.我知道如果我有一个MyClass被叫的实例x,我可以打电话x.GetName().此外,我可以设置一个Func<string>变量x.GetName.

现在这是我的问题.假设我知道上面的类叫做MyClass; 我有一些对象,x但我不知道它是什么.我可以GetName通过这样做来检查该对象是否有方法:

MethodInfo getName = x.GetType().GetMethod("GetName");
Run Code Online (Sandbox Code Playgroud)

假设getName不为空.然后,我不能进一步检查getName.ReturnType == typeof(string)getName.GetParameters().Length == 0,在这一点上,我岂不是很肯定的是,在我所代表的方法,getName对象可以肯定被转换为一个Func<string>,不知何故?

我意识到有一个MethodInfo.Invoke,我也意识到我总能创造一个Func<string>像:

Func<string> getNameFunc = () => getName.Invoke(x, null);
Run Code Online (Sandbox Code Playgroud)

我想我要问的是,是否有任何方法可以一个MethodInfo对象转到它所代表的实际方法,从而在该过程中产生反射的性能成本,但 …

.net reflection performance func methodinfo

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

文本编辑器如何实现?

这个问题可能会让我听起来很无能为力.那是因为我.

我只是想,如果我假设有兴趣设计我自己的文本编辑器GUI控件,小部件或任何你想要调用的东西(我不是),我怎么会这样做呢?

像我这样的新手的诱惑是以字符串的形式存储文本编辑器的内容,这看起来非常昂贵(并不是说我太熟悉字符串实现在一种语言/平台和下一种语言/平台之间的区别;但是我知道在.NET中,例如,它们是不可变的,所以频繁的操作,例如你需要在文本编辑器中支持的内容,将会非常浪费,在一个接一个地连续构建一个字符串实例).

据推测,使用包含文本的一些可变数据结构; 但弄清楚这个结构可能会是什么样的,这对我来说是一个挑战.随机访问会很好(我,无论如何 - 毕竟,你不希望用户能够跳到文本的任何地方吗?),但后来我想知道导航到某个地方的成本在一个巨大的文件中间并立即开始输入.同样,新手方法(比如你将文本存储为可调整大小的字符数组)会导致性能非常差,我想,就像用户输入的每个字符一样,会有大量的数据要"移位"过度.

因此,如果我不得不猜测,我认为文本编辑器采用某种结构将文本分成更小的部分(行,可能?),它们各自包含随机访问的字符数组,并且它们本身是随机的可作为离散块访问.即使看起来似乎必须是一个相当可怕的过度简化,但是,如果它甚至远远接近开始.

当然,我也认识到,有可能无法成为一个"标准"的方式,文本编辑器来实现; 也许它在一个编辑器之间变化很大.但我想,由于这显然是一个已被解决很多次的问题,这些年来可能已经出现了一种相对普遍的方法.

无论如何,我只是想知道是否有人对这个主题有一些了解.就像我说的那样,我绝对不想写自己的文本编辑器; 我只是好奇.

language-agnostic string user-interface text-editor

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

枚举是如何从System.Enum派生出来的,同时又是一个整数?

编辑:底部的评论.还有,这个.


这就是让我感到困惑的一点.我的理解是,如果我有这样的枚举......

enum Animal
{
    Dog,
    Cat
}
Run Code Online (Sandbox Code Playgroud)

...我基本上完成的是定义了一个用两个定义的值调用的值类型Animal,DogCat.这种类型派生自引用类型 System.Enum(值类型通常不能执行的操作 - 至少不在C#中 - 但在这种情况下是允许的),并且具有用于在int值之间来回转换的工具.

如果我刚刚描述上面的枚举类型的方式是真的,那么我希望以下代码抛出InvalidCastException:

public class Program
{
    public static void Main(string[] args)
    {
        // Box it.
        object animal = Animal.Dog;

        // Unbox it. How are these both successful?
        int i = (int)animal;
        Enum e = (Enum)animal;

        // Prints "0".
        Console.WriteLine(i);

        // Prints "Dog".
        Console.WriteLine(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

通常,您不能将值类型System.Object从其确切类型以外的任何其他方式取消装箱.那以上怎么可能呢?这是因为如果该 …

.net clr inheritance enums unboxing

41
推荐指数
2
解决办法
4535
查看次数

将整个文本文件作为单个字符串读取的合理方法是什么?

我相信这很容易; 我无法立即从谷歌找到答案.

我知道我能做到这一点(对吗?):

text = ""
File.open(path).each_line do |line|
    text += line
end

# Do something with text
Run Code Online (Sandbox Code Playgroud)

但那似乎有点过分,不是吗?或者这是人们在Ruby中做到的方式?

ruby string io file

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

为什么System.String对象不能缓存其哈希代码?

浏览string.GetHashCode使用Reflector的源代码会显示以下内容(对于mscorlib.dll版本4.0):

public override unsafe int GetHashCode()
{
    fixed (char* str = ((char*) this))
    {
        char* chPtr = str;
        int num = 0x15051505;
        int num2 = num;
        int* numPtr = (int*) chPtr;
        for (int i = this.Length; i > 0; i -= 4)
        {
            num = (((num << 5) + num) + (num >> 0x1b)) ^ numPtr[0];
            if (i <= 2)
            {
                break;
            }
            num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1]; …
Run Code Online (Sandbox Code Playgroud)

.net string hashcode immutability gethashcode

39
推荐指数
3
解决办法
2829
查看次数

为什么不string.Substring与源字符串共享内存?

众所周知,.NET中的字符串是不可变的.(好吧,不是100%完全不可变,但设计不可变,无论如何都被任何理性的人使用.)

这使得基本上可以,例如,以下代码只在两个变量中存储对同一字符串的引用:

string x = "shark";
string y = x.Substring(0);

// Proof:
fixed (char* c = y)
{
    c[4] = 'p';
}

Console.WriteLine(x);
Console.WriteLine(y);
Run Code Online (Sandbox Code Playgroud)

以上输出:

sharp
sharp
Run Code Online (Sandbox Code Playgroud)

显然,xy指向同一个string对象.所以这是我的问题:为什么不Substring 总是与源字符串共享状态?字符串本质上是char*一个长度的指针,对吗?所以在我看来,至少在理论上应该允许分配单个内存块来保存5个字符,其中两个变量只指向该(不可变)块内的不同位置:

string x = "shark";
string y = x.Substring(1);

// Does c[0] point to the same location as x[1]?
fixed (char* c = y)
{
    c[0] = 'p';
}

// Apparently not...
Console.WriteLine(x);
Console.WriteLine(y); …
Run Code Online (Sandbox Code Playgroud)

.net c# string substring immutability

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