我想完成这篇文章中正在做的事情: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发布的,一切都很好,还是有更多的东西?这个问题比一个"有问题"的问题更为谨慎,但我觉得如果没有意识到这一点,我真的可能会把它搞得一团糟.
+(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
我正逐渐对核心动画变得更加认真,并且非常欣赏由简短的单词(键入?)组成的解释,慢慢地解释CATransform3DIdentity以及为什么下面的代码执行它所做的事情(在'3D'空间中翻转层)
kFaceUpTransform = kFaceDownTransform = CATransform3DIdentity;
// Construct a 180-degree rotation matrix:
kFaceDownTransform.m11 = kFaceDownTransform.m33 = -1;
Run Code Online (Sandbox Code Playgroud)
第二个想法,快速键入并使用多音节词语,但请保持温柔.
PS.我得到的印象是,如果我要进一步了解动画,我应该对线性代数更加舒服......这是正确的吗?
http://ejohn.org/blog/building-a-javascript-library/
在上面的链接中,John Resig建议new foo在调用者最初忘记的情况下调用并返回构造函数.
这对我来说有点意义,但后来我得到一个严格的错误,因为我的构造函数并不"总是"返回一个值.在javascript中获得对构造函数的一点理解后,我停止了返回,this因为new自动执行此操作.
我的问题是,我应该......
在玩的时候-Werror,我遇到了-Wauto-import.它似乎建议我将所有#import导入系统库/框架的语句转换为@import语句.警告仅对显式使用模块有用还是有其他含义?
例
#include <stddef.h>
// suggests change to
@import Darwin.C.stddef;
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我接受建议的更换,我会收到警告 expected unqualified-id
当我进入时,> git subtree add --prefix=<some dir> --squash <some repo> master我收到了消息'master' does not refer to a commit.如果我将'master'改为sha,我仍然会收到警告.回购有效,主要存在于我试图引入的回购中.
我有一个对象parameter,它有一个属性value.它因此被定义
var parameter = {
value : function() {
//do stuff
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题是,在某些情况下,value需要拥有自己命名的属性 length
我能这样做吗?似乎put this.length = foo不起作用,parameter.value.length = foo在对象声明之后也不起作用.
我相信,如果我们将地图中的值视为函子中要考虑的值,将键作为上下文的一部分考虑(我从Typeclassopedia中提取这种语言 ),但我不确定这些注意事项是否意味着它一般来说,它不是一个算子.
objective-c ×3
javascript ×2
calayer ×1
casting ×1
clang ×1
cocoa ×1
constants ×1
constructor ×1
dynamic ×1
git ×1
git-subtree ×1
haskell ×1
ios ×1
module ×1
nsdictionary ×1
properties ×1
release ×1
return-value ×1
typeclass ×1
xcode ×1