小编Gab*_*lla的帖子

为什么在C中使用malloc时指定大小?

请使用以下代码:

int *p = malloc(2 * sizeof *p);

p[0] = 10;  //Using the two spaces I
p[1] = 20;  //allocated with malloc before.

p[2] = 30;  //Using another space that I didn't allocate for. 

printf("%d", *(p+1)); //Correctly prints 20
printf("%d", *(p+2)); //Also, correctly prints 30
                      //although I didn't allocate space for it
Run Code Online (Sandbox Code Playgroud)

malloc(2 * sizeof *p)我用这条线为两个整数分配空间,对吧?但是如果我添加int到第三个位置,我仍然可以正确分配并可检索.

所以我的问题是,为什么在使用时指定尺寸malloc

c malloc memory-management

21
推荐指数
4
解决办法
3256
查看次数

滚动进化回来

这个问题可能看起来很愚蠢,但我找不到任何有关如何在Play 2.0中回滚演变的说明.谷歌只发现一个页面,说明进化文件的"唐氏"部分用于那个,而这就是全部.任何指针或说明将不胜感激.

revert playframework-2.0 playframework-evolutions

21
推荐指数
2
解决办法
4398
查看次数

Facebook SDK iOS邀请没有FBWebDialogs的用户

我想从Facebook获得不是我的应用用户的朋友列表,并且能够邀请他们.

使用FBWebDialogs我可以选择用户,但我想知道foursquare是如何做到的?截图:

objective-c ios facebook-ios-sdk

21
推荐指数
2
解决办法
5843
查看次数

GCD vs performSelectorInBackground/performSelectorOnMainThread

我是ios开发的新手.我有以下问题:

  1. 当我们使用GCD(dispatch_group_async,dispatch_async(dispatch_get_main_queue()...)和我们使用performSelectorInBackground/performSelectorOnMainThread时?
  2. 这两者之间有什么不同.

    我知道当我们使用performSelectorInBackground时,我们创建了一个新的NSThread.但是当我们使用dispatch_group_async时却不一样吗?因为如果我们创建多个dispatch_group_async,则意味着我们需要在队列中提交多个块.这些块可能在不同的队列上运行.因此,当我们创建多个dispatch_group_async时,是否意味着我们创建了一个新线程?(因为块可能在不同的队列上运行)(我对NSThread和阻塞队列感到困惑.....)

谢谢!!

objective-c nsthread ios

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

在Objective-C中创建一个对象数组.

现在和XCode一起玩了大约2个星期,并且稍微阅读了MVC.我试图将模型连接到控制器时遇到问题,因为我发现很难理解数组.当我用Java编程时,我可以处理简单的数组但是我很安静地被NSArrays我看到的Obj-C吓倒了.

如果有人能够如此友善地向我展示一些对象的简单调用,那么我将永远感激不尽.

我的模特:

Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject 
{
NSString *name;
NSNumber *age;
}

@property(nonatomic, retain) NSString *name;
@property(nonatomic, retain) NSNumber *age;

@end
Run Code Online (Sandbox Code Playgroud)

Person.m

#import "Person.h"
@implementation Person
@synthesize name;
@synthesize age;
@end
Run Code Online (Sandbox Code Playgroud)

在我尝试学习的过程中,我保持非常简单.

现在我的Controller类.我想要做的是创建一个包含40个"人物"对象的数组.但我不知道将其放入Obj C的代码中的正确方法.

或者Controller.h

#import <Foundation/Foundation.h>
@class Person;
@interface Controller : NSObject 
{
Person *person;
}
@property(nonatomic, retain) Person *person;

-(void) doSomeWork;

@end
Run Code Online (Sandbox Code Playgroud)

Controller.m或者

#import "Controller.h"
#import "Person.h"

@implementation Controller

@synthesize person;


-(IBAction)doSomeWork
{
// I guess here is where i should create …
Run Code Online (Sandbox Code Playgroud)

iphone model-view-controller objective-c nsarray

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

通过类别覆盖Objective c中的方法

以下是在目标c中工作:

// Base Class in ClassA.h and ClassA.m
@interface ClassA : NSObject 
- (NSString *) myMethod;
@end
@implementation ClassA
- (NSString*) myMethod { return @"A"; }
@end

//Category in ClassA+CategoryB.h and ClassA+CategoryB.m
@interface ClassA (CategoryB) 
- (NSString *) myMethod;
@end
@implementation ClassA (CategoryB)
- (NSString*) myMethod { return @"B"; }
@end
Run Code Online (Sandbox Code Playgroud)

问题是,如果我只是导入ClassA.h并发送消息

[myClassA myMethod]; //returns B
Run Code Online (Sandbox Code Playgroud)

这为什么会回归B?我没有导入ClassA + CategoryB

即便如此,如果我做了以下事情:

// Base Class in ClassA.h and ClassA.m
@interface ClassA : NSObject 
- (NSString *) myMethod;
- (NSString *) …
Run Code Online (Sandbox Code Playgroud)

objective-c categories ios

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

在Scala中的免费Monad中堆叠monadic效果

我正在学习Scala中的Free monad,我已经汇总了一个代数的简单例子,我可以使用猫将其升级为Free monad.

这是我的代数

sealed trait ConsultationOp[A]
object consultation {
  case class Create(c: Consultation) extends ConsultationOp[Unit]
  case class Get(s: ConsultationId) extends ConsultationOp[Option[Consultation]]
}
Run Code Online (Sandbox Code Playgroud)

我可以像使用它一样

def app = for {
  c <- consultation.Create(Consultation("123", "A consultation"))
  _ <- consultation.Get(c._id)
} yield ()

def interpreters = ConsultationInterpreter or UserInterpreter
app.foldMap(interpreters)
Run Code Online (Sandbox Code Playgroud)

当从提升ConsultationOpFree隐式执行.

(缺少很多细节,完整的工作实现在这里:https://github.com/gabro/free-api)

到目前为止一切都那么好,但是如果我需要提取返回的可选值呢consultation.Get

首先想到的是monad变换器,即类似的东西

def app = for {
  c <- consultation.Create(Consultation("123", "A consultation")).liftM[OptionT]
  d <- OptionT(consultation.Get(c._id))
  _ <- doSomethingAConsultation(d)
} yield () …
Run Code Online (Sandbox Code Playgroud)

scala free-monad scala-cats

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

从LabelledGeneric实例中提取标签值

请考虑以下示例:

import shapeless._

case class Foo(bar: String, baz: Boolean)
val labl = LabelledGeneric[Foo]
Run Code Online (Sandbox Code Playgroud)

现在,类型labl是(美化)

LabelledGeneric[Foo] {
  type Repr =
    FieldType[Symbol @@ String("bar"), String] ::
    FieldType[Symbol @@ String("baz"), Boolean] ::
    HNil
}
Run Code Online (Sandbox Code Playgroud)

它已经传达了我需要的信息,即案例类字段的名称.

我正在寻找的是一种从labl某种方式走向某种方式的方式

"bar" :: "baz" :: HNil
Run Code Online (Sandbox Code Playgroud)

即将单例类型中包含的信息具体化为值.

这可能吗?我可以使用一个宏,但我觉得我最终会在无形状中重写与该GenericMacros对象非常相似的东西,所以我想知道我是否可以直接利用它.

scala case-class shapeless labelled-generic

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

Swift中元组基数的限制(如果有的话)是什么?

每个元组基数都由swift中的自己的类型表示(就像我所知道的任何其他强类型编程语言一样),所以我们有

($T1, $T2)
($T1, $T2, $T3)
...
Run Code Online (Sandbox Code Playgroud)

由于我们有几种不同的类型,每个基数一个,它们需要是有限的.

在Scala中,我们最多Tuple22,在Haskell中,当前限制应该是64.

swift的限制是什么(如果有的话)?此外,是编译器生成的类型实现还是有一个我找不到的显式实现?

tuples swift

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

如何在生产中处理Play Framework 2数据库演变

似乎每当我更改模型时,Play Framework都会要求我运行一个删除整个模式并重新创建它的脚本.显然这不适合生产,那么在生产中处理这个问题的正确方法是什么?

注意,我正在使用ebean和Postgres,并在heroku上托管.

java postgresql playframework playframework-2.0 playframework-evolutions

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