小编gri*_*eak的帖子

创建一个常量字典对象

我想完成这篇文章中正在做的事情:Objective-C中的常量

但是,我想构建一个NSDictionary.

如果我这样做:

constants.h

extern NSArray *const mFooKeys;
extern NSArray *const mFooObjects;
extern NSDictionary *const mFooDictionary;
Run Code Online (Sandbox Code Playgroud)

constants.m

NSArray *const mFooKeys = [[NSArray alloc] initWithObjects: 
                                   @"Foo", @"Bar", @"Baz", nil];
NSArray *const mFooObjects = [[NSArray alloc] initWithObjects: 
                                   @"1", @"2", @"3", nil];
NSDictionary *const mFooDictionary = [[NSDictionary alloc] dictionaryWithObjects:mFooObjects 
                                                                         forKeys:mFooKeys]; 
Run Code Online (Sandbox Code Playgroud)

我是以dealloc发布的,一切都很好,还是有更多的东西?这个问题比一个"有问题"的问题更为谨慎,但我觉得如果没有意识到这一点,我真的可能会把它搞得一团糟.

release constants objective-c nsdictionary

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

将块转换为void*以进行动态类方法解析

+(BOOL)resolveClassMethod:(SEL)aSel {
    NSString *lString = NSStringFromSelector(aSel);

    if ([self validateLetterAndAccidental:lString]) {

        id (^noteFactoryBLOCK)(id) = ^(id aSelf) {
            return [self noteWithString:lString];
        };

        IMP lIMP = imp_implementationWithBlock(noteFactoryBLOCK);
        ...
Run Code Online (Sandbox Code Playgroud)

我在最后一行收到错误,因为noteFactoryBLOCK被强制转换为void*而ARC不允许这样做.目前有办法实现我想要的吗?我想要一个IMP,我可以在运行时传递给class_addMethod.

编辑

    IMP myIMP = imp_implementationWithBlock(objc_unretainedPointer(noteFactoryBLOCK));
Run Code Online (Sandbox Code Playgroud)

这条线给我一个警告而不是错误 - Semantic Issue: Passing 'objc_objectptr_t' (aka 'const void *') to parameter of type 'void *' discards qualifiers

implementation casting dynamic objective-c void-pointers

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

我可以获得CATransform3DIdentity的基本解释吗?

我正逐渐对核心动画变得更加认真,并且非常欣赏由简短的单词(键入?)组成的解释,慢慢地解释CATransform3DIdentity以及为什么下面的代码执行它所做的事情(在'3D'空间中翻转层)

    kFaceUpTransform = kFaceDownTransform = CATransform3DIdentity;
    // Construct a 180-degree rotation matrix:
    kFaceDownTransform.m11 = kFaceDownTransform.m33 = -1;
Run Code Online (Sandbox Code Playgroud)

第二个想法,快速键入并使用多音节词语,但请保持温柔.

PS.我得到的印象是,如果我要进一步了解动画,我应该对线性代数更加舒服......这是正确的吗?

core-animation calayer catransform3d ios

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

在javascript中显式返回构造函数中的值

http://ejohn.org/blog/building-a-javascript-library/

在上面的链接中,John Resig建议new foo在调用者最初忘记的情况下调用并返回构造函数.

这对我来说有点意义,但后来我得到一个严格的错误,因为我的构造函数并不"总是"返回一个值.在javascript中获得对构造函数的一点理解后,我停止了返回,this因为new自动执行此操作.

我的问题是,我应该......

  1. 不使用描述的防御技术?
  2. 在构造函数的末尾返回这个?
  3. 我不知道的神秘选择?

javascript constructor return-value

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

在Xcode/Clang中`-Wauto-import`的含义是什么?

在玩的时候-Werror,我遇到了-Wauto-import.它似乎建议我将所有#import导入系统库/框架的语句转换为@import语句.警告仅对显式使用模块有用还是有其他含义?

#include <stddef.h>
// suggests change to 
@import Darwin.C.stddef;
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我接受建议的更换,我会收到警告 expected unqualified-id

xcode module clang

5
推荐指数
0
解决办法
151
查看次数

我应该解除@property项吗?

我一直遵循的基本规则是"如果我分配,我dealloc",但这是一个过于简单的观点吗?

cocoa objective-c

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

当我使用git-subtree时,为什么我被告知"'master'没有引用提交"?

当我进入时,> git subtree add --prefix=<some dir> --squash <some repo> master我收到了消息'master' does not refer to a commit.如果我将'master'改为sha,我仍然会收到警告.回购有效,主要存在于我试图引入的回购中.

git git-subtree

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

在javascript中使用属性的函数?

我有一个对象parameter,它有一个属性value.它因此被定义

var parameter = {
    value : function() {
        //do stuff
    }
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,在某些情况下,value需要拥有自己命名的属性 length

我能这样做吗?似乎put this.length = foo不起作用,parameter.value.length = foo在对象声明之后也不起作用.

javascript properties

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

关联地图或字典是算子吗?

我相信,如果我们将地图中的值视为函子中要考虑的值,将键作为上下文的一部分考虑(我从Typeclassopedia中提取这种语言 ),但我不确定这些注意事项是否意味着它一般来说,它不是一个算子.

haskell functional-programming typeclass

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