如果我通过选择"语义"这个词来使用错误的术语,那么首先道歉.
出于各种显而易见的原因,我非常喜欢Java中的泛型.当我处理各种各样奇怪的代码时,它对我有很大的帮助,而且我经常要回到旧的东西.今天我发现自己有一个经典的参数错位错误,我可能不会在前通用时代写的 - 它们让我有点懒.
我想知道是否有一种语言特性,无论是用Java还是用其他语言中的类似概念,它都具有泛型的类型安全性并将其扩展到一种语义安全性.具体来说,我想帮助捕获因将正确的东西放在错误的地方而导致的错误.
一个简单的例子:
Map<String, String> myMap = new HashMap<String, String>();
String myKey = "key";
String myVal = "value";
myMap.put(myVal, myKey);
Run Code Online (Sandbox Code Playgroud)
哪个没有编译器会捕获.我想,我可以子类化包装器给我一个StringKey类型和Value类型.我可以命名我的变量以表明它们的用途(就像我在这个例子中所做的那样).还有什么?
所以我的问题是:
谢谢
我需要NSNumber从另一个生成一个排序的s 数组NSArray.我想用这个sortedArrayUsingComparator:方法.我在Apple文档中找到了这个例子:
NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
Run Code Online (Sandbox Code Playgroud)
这里我只是在块中提供比较器,这很好.排序本身 - 隐藏在我身上的一点,它使用了这个块 - 似乎是在提升.
我想知道我是否可以在此块外部请求不同的排序顺序,或者我是否只需要翻转<和>(或NSOrderedXXX)s?
我有一个二维列表和一维列表.我想将1D列表作为附加列插入到2D列表中.例如:
array = {{a,1,2},{b,2,3},{c,3,4}};
column = {x,y,z};
Run Code Online (Sandbox Code Playgroud)
变
final = {{a,1,2,x},{b,2,3,y},{c,3,4,z}};
Run Code Online (Sandbox Code Playgroud)
我做得非常好:
Table[Insert[array[[i]], column[[i]], 4], {i, Length[array]}];
Run Code Online (Sandbox Code Playgroud)
我的问题:在Mathematica中这样做的正确方法是什么?我不认为它需要我正在使用的循环.我的解决方案感觉很难看.
有没有办法阻止XCode 4中的IB从缩放到每当我更改所选控件时尝试填充屏幕?试图在1440x900笔记本电脑屏幕上开发iPad故事板让我发疯.这使得几乎不可能在屏幕上放置大块.
有没有人知道一些隐藏的偏好迫使XCode停止如此"有帮助"?
谢谢
我正在使用此问题中的示例:如何将UIScrollview与UIPagecontrol结合使用以显示不同的视图?UIScrollView在我的iPad应用中向页面添加包含多个子视图.
我的应用程序顶部有一个大视图,底部有一个小框.底部的框是UIScrollView; 用户将向左和向右滑动以显示该小部分中各种功能的框.顶部的大视图永远不会改变,所以我认为segues不合适.
我有一个故事板,里面有一个View Controller Scene.虽然我可以为此添加视图但我无法设计"屏幕外"视图; 换句话说,我无处可以绘制每个子视图.我怎样才能做到这一点?我是否需要为每个子视图制作单独的XIB?如果是这样,我该如何加载它们?或者,我是否应该使我的scrollview(subview width * subview count)宽并绘制与前一个相邻的每个视图?这是我的第一个iOS应用程序,所以我可能会有一些事情倒退.
谢谢
蒂姆
社区Wiki问题的接受答案:在编写Objective-C和Cocoa时,您使用的最佳实践是什么?说iPhone不能做双精度数学(或者更确切地说,它们可以,但只能在软件中模拟.)不幸的是它提供的2009年链接作为参考:iPhone上的Double vs float直接与该声明相矛盾.这些都是旧的,在3GS刚刚问世的时候写的.
那么最新的arm7架构的故事是什么?我是否需要担心第二个链接引用的'thumb'编译器标志?我可以安全地使用double变量吗?对于386SX和DX以及"数学协处理器"的黑暗日子,我有令人讨厌的闪回.告诉我这是2012年,我们继续前进.
我觉得很容易.
我有一个来自CSV的混合日期,文本和数字数据的二维列表(数组).我希望能够按单列中的值对行进行排序,在本例中是一个文本格式的日期.例如:
{{1/12/2008, Bob, 123},
{28/06/2007, Alice, 456},
{19/08/2009, Charlie, 789}}
我想按日期对列表中的行进行排序(因此按Alice,Bob,Charlie的顺序排序)
到目前为止,我一直认为我可能希望DateList在我的日期列中进行映射,并将年,月,日添加到列表中,因此它变为:
{{2008, 12, 1, Bob, 123}, {2007, 6, 28, Alice, 456}}
然后我不得不做三种而不是一种,需要按年分解阵列.那似乎不对,现在我被卡住了.我知道这应该很简单,但我不能为我的生活弄清楚.任何指针赞赏.
谢谢,
蒂姆
我为float数组创建了一个typedef,如下所示:
typedef float fooType[];
Run Code Online (Sandbox Code Playgroud)
这样我就可以静态地声明和初始化float数组:
fooType myArray = {1.0, 2.0, 3.0}
Run Code Online (Sandbox Code Playgroud)
这很好.我可以说myArray[2]没有任何问题,一般fooType按照我的意愿使用我.在我的程序环境中,很明显fooType是一个数组类型(它实际上是一个巨大的查找表),这就是为什么我不是简单的做typedef float fooType.
然后我如何声明并使用变量指向bar并访问元素bar?我不能像这样声明一个简单的变量:
fooType bar = myArray;
Run Code Online (Sandbox Code Playgroud)
既然错误了invalid initializer; 我没想到它会起作用,因为编译器不知道要分配多少内存.我尝试了一些指针:
fooType *bar = myArray;
Run Code Online (Sandbox Code Playgroud)
这给出了一个警告:initialization from incompatible pointer type当我使用bar[1].. 访问元素时出现错误.这声明很好,正如我所期望的那样,因为类型现在匹配:
fooType *bar = &myArray;
Run Code Online (Sandbox Code Playgroud)
但正如上面的编译错误一样,invalid use of array with unspecified bounds我说bar[1].
这有效:
float *bar = myArray;
float val = bar[3];
Run Code Online (Sandbox Code Playgroud)
但我不想,因为我失去了typedef的可读性.
我在一个可爱的OO世界(Java)中被埋葬了很长时间,所以我希望从中了解在这种情况下C语言中的惯用语.如果没有直接的解决方案,我已经准备好改变我对typedef的使用以适应惯例.我有一种感觉,但并不复杂.
谢谢
我正在使用Xcode 4.2/Lion上的clang构建一个带有ARC的iOS 5应用程序.对我来说,良好的做法是尽量摆脱尽可能多的警告,但我迷失在这一点上.该应用程序有相当多的类,但有限数量的头文件(8或9)给出了这样的链接器警告:
warning: no rule to process file '$(PROJECT_DIR)/TKMyClass.h' of type sourcecode.objj.h for architecture arm7`
Run Code Online (Sandbox Code Playgroud)
我没有看到这些标题之间存在任何重要的共性:一对是第三方OSS代码; 其余的都是我自己的.一个是普通的C头文件(没有相应的.c),只包含常量#defines和枚举; 一对夫妇是UIView和UIViewController子类与Xcode的模板创建的; 其余的是普通的Obj-C类,其中一些继承自NSObject,有些则没有.所有(我的班级)都是在项目中不同时间从头开始创建的.旧版和新版都没有发出警告.
我的项目使用了C++,Objective-C++和Objective C类的混合.这里的警告生成类主要是Objective C(它们的实现是在.m文件中),但是这两个第三方类是用Objective C++(.mm)实现的.
该项目否则建立良好,并在模拟器和iDevices上运行.
令我感到羞耻的是,我对Xcode中的项目设置页面并不是特别熟悉.我希望解决方案包含在某处,但我不知道从哪里开始而不会破坏.
我可以使用没有iOS开发人员计划帐户的模拟器为iOS开发(我只是无法在设备上运行.)是否有类似的方式为Mac Developer Program工作?我想在注册付费帐户之前测试我的一些实用程序应用程序的沙盒兼容性(以及App Store分发).如果我的应用程序不起作用或者至少不容易修复,那么99美元就不值得了.
我可以启用哪些项目设置来强制执行沙盒操作?我希望代码签名不起作用.